定义一个类
Python中,定义类的方式是:class classname():
class cat():
def __init__(self, name, age):#Python中的构造函数,初始化四个成员变量
self.name=name
self.age=age
self.size='small'
self.hungrystat=False;
print('__init__ function run')#四个成员变量
def sit(self):
print(self.name.title()+'is sitting')
def roll(self):
print(self.name.title()+'is rolling')
def sethungrystat(self, hungrystat):
self.hungrystat=hungrystat
instance=cat('tom',1)#实例化
instance.sethungrystat(hungrystat=True)#修改成员变量的状态
print(instance.hungrystat)

class cat():表示创建一个类,类名是cat,后面的括号和分号不能省略,缩进部分表示类中的函数
每个类中都有__init__函数,在类被实例化时调用,类似于C++中的构造函数,Python直接在__init__函数中声明并初始化成员变量(self.name=name self.age=age)
成员变量可以在__init__函数中随意添加,例如self.size
self代表类的实例本身,当执行 instance=cat('tom',1)后,instance就是cat的一个实例,self就是instance,self类似于C++中的this指针,当调用成员函数时,self自动传入成员函数
可以通过成员函数来修改变量的值,比如cat类中的sethungrystat函数
类的继承
Python中,继承类的方式是:class classname(parentclassname):
class cat():
def __init__(self, name, age):
self.name=name
self.age=age
self.size='small'
self.hungrystat=False;
print('__init__ function runs')
def sit(self):
print(self.name.title()+'is sitting')
def roll(self):
print(self.name.title()+'is rolling')
def sethungrystat(self, hungrystat):
self.hungrystat=hungrystat
class cat1(cat):#父类是cat,子类叫cat1,
def __init__(self, name, age, color):
print('__init__ in cat1 runs')
super().__init__(name, age)
self.color=color#子类独有的成员变量
def roll(self):#子类中重写父类的roll函数
print(self.name.title()+'is rolling in cat1')
instance=cat('tom',1)
instance.roll()#调用父类的roll函数
instance.sethungrystat(hungrystat=True)
print(instance.hungrystat)
print('----------------')
instance1=cat1('jerry',1)
instance1.sit()#调用父类的sit函数
instance1.roll()#调用子类的roll函数
print(instance1.color)

子类__init__函数中的super函数返回父类的实例,然后调用父类的init方法
python中,子类继承父类时,子类会继承父类所有的成员函数和成员变量,同时子类可定义自己的成员变量和成员函数
cat1拥有cat的所有成员变量和函数,同时cat1自己定义了color成员
如果在子类中重写了父类的函数,在调用该函数时,子类的实例不会调用父类的方法,而是直接调用子类的方法
cat1中重写了父类的方法roll,所以cat1的实例在调用roll的时候,不会再调用父类的方法,而会调用子类的方法
如果在子类中没重写了父类的函数,在调用该函数时,子类的实例会调用父类的方法
子类cat1没有重写sit函数,所以子类调用的是父类cat的sit方法
导入类
import关键字不仅可以导入函数,也可以导入类,导入方式和函数类似
关于import的详细说明已经在我的博客Python知识点6——函数中详细说明
1.导入类
from classtest import cat, cat1
instance=cat('tom',1)

from classtest import cat, cat1表示从classtest.py文件导入两个类cat和cat1,当然也可以只导入一个
from classtest import cat, cat1也可以写为from classtest import *(导入所有类),这种写法不建议使用,容易引起命名冲突
2.导入模块
import classtest as ct
instance=ct.cat('tom',1)

参考:
《Python编程从入门到实践》
欢迎大家评论交流,作者水平有限,如有错误,欢迎指出
本文深入解析Python中类的定义与使用,包括构造函数、成员变量、成员函数及通过实例化对象调用成员函数的过程。同时,详述了类的继承机制,包括如何重写父类方法和使用super函数调用父类构造函数。最后介绍了类的导入方法。
2905

被折叠的 条评论
为什么被折叠?



