1、类的创建
语法:
class 类名():
#类的属性
name = '喵酱'
#类的方法
def joke(self):
print('创建类成功')
2、类的实例化
语法:实例名 = 类名()
列如:
my_captain = Captain()
意义:创建一个实例,它可以调用所属类的所有属性和方法 知识点:
- 类和实例的关系类似于「群体和个体」
- 群体里的每个个体都有着相同相似的特 征和行为
3、self参数
- 在定义实例方法时,第一个参数必须是
self
参数,实例在调用方法时,不需要传递参数 - 在实例方法中需要调用类属性或其他实例方法时,必须采用
self.属性名
和self.方法名
这两种方式
4、__init__
方法
__init__
方法会在类的实例化的时候,自动的调用,因此__init__
方法也被称为初始化方法
类的使用
1、继承语法:classA(B)
其中A代表子类,B代表父类 对于子类来讲,它能够继承父类所拥有的属性和方法
2、类的多重继承
在Python当中,定义一个类的时候可以同时继承多个父类,这种方式被称为多重继承
例如:
# 垃圾类
class Waste():
w_name = '垃圾'
# ‘垃圾’类的一个方法:回收垃圾
def recycle_w(self):
print('回收垃圾...')
# ‘有害垃圾’类
class HazardousWaste(Waste): # 括号中填写父类的变量名
hw_name = '有害垃圾'
# ‘有害垃圾’类的一个方法:回收有害垃圾
def recycle_hw(self):
print('回收有害垃圾...')
# 创建‘有害垃圾’类的实例hw
hw = HazardousWaste()
print('子类的实例hw与父类的是否存在关联:')
print(isinstance(hw, Waste))
print('子类的实例hw与‘object’类的是否存在关联:')
print(isinstance(hw, object))
print('结论:子类默认继承‘object’类,与其存在关联!')
运行代码后可以看到: HazardousWaste(Waste)
虽然只写了一个父类Waste
,却与object
存在关联关系 这也印证了Python中所有的类都默认继承于object
。换句话说,object
是所有类的'父类'
3、类的重写
什么是类的方法重写呢?当我们在定义类的方法时,方法的名字和父类的一样,修改了其内容,就是类的方法重写
动物中偶尔会出现变异的情况:假如有不会爬树的猫。就可以重新分类为'变异猫'类
这里定义一个'猫'类和'变异猫'类,并修改了‘变异猫’类的爬树方法
# ‘猫’类
class Cat():
name = '猫'
# 爬树方法
def climb_tree(self):
print('可以爬树!')
# ‘变异猫’类
class VariationCat(Cat):
v_name = '变异猫'
# 爬树方法
def climb_tree(self):
print('不可以爬树!')
print('‘变异猫’的实例:')
# ‘变异猫’类的实例vc
vc = VariationCat()
# 调用爬树方法
print('变异猫的爬树方法:')
vc.climb_tree()
# 调用父类name属性
print('变异猫父类的name属性:')
print(vc.name)
print('变异猫自己的v_name属性:')
print(vc.v_name)
print('变异猫,同样是‘猫’,但是‘不可以爬树!’')
print('-------------------------------------------')
print('‘猫’的实例:')
# ‘猫’类的实例c
c = Cat()
# 调用爬树方法
print('猫的爬树方法:')
c.climb_tree()
# 调用name属性
print('猫的name属性:')
print(vc.name)
print('虽然子类‘变异猫’修改了climb_tree()方法,但是父类完全不受影响,依然‘可以爬树!’')
可以看到,子类‘变异猫’类修改了‘爬树’方法,对‘猫’类完全不影响。这就造就了‘变异猫’类不会爬树的结果,但是‘猫’类依然可以爬树
类的重写总结:
-
在子类中编写与父类名称一样的函数或变量就是类的重写
-
类的方法在子类中重写之后就不可以再调用父类的该方法了