一,类的继承
1.1继承
概述
1 ,在现实生活中,继承一般指的是子女继承父辈的财产
2. 程序中的继承:在程序中,继承描述的是多个类之间的所属关系。
如果一个类A里面的属性和方法可以复用,则可以通过继承的方式,传递到类B里。
那么类A就是基类,也叫做父类;类B就是派生类,也叫做子类。
程序中示例
# 父类
class A(object):
def __init__(self):
self.num = 10
def print_num(self):
print(self.num + 10)
# 子类
class B(A):
pass
b = B()
print(b.num)
b.print_num()
1.2单继承
概述
单继承:子类只继承一个父类
虽然子类没有定义__init__方法初始化属性,也没有定义实例方法,但是父类有。所以只要创建子类的对象,就默认执行了那个继承过来的__init__方法
总结:
子类在继承的时候,在定义类时,小括号()中为父类的名字
父类的属性、方法,会被继承给子类
示例
class Master(object):
def __init__(self):
#属性
self.kongfu="古法坚果"
#实例方法
def make_cake(self):
print(self.kongfu)
class Prentice(Master):
pass
laoli=Master()
print(laoli.kongfu)
laoli.make_cake()
damao=Prentice()
print(damao.kongfu)
damao.make_cake()
1.3 多继承
概述
多继承可以继承多个父类,也继承了所有父类的属性和方法
注意:
如果多个父类中有同名的 属性和方法,则默认使用第一个父类的属性和方法(根据类的魔法属性mro的顺序来查找)
多个父类中,不重名的属性和方法,不会有任何影响。
class SchoolA():
def make_cake(self):
print('制作schoolA煎饼果子')
def make_noodles(self):
print('制作schoolA烤冷面')
# 创建学校类
class SchoolB():
def make_cake(self):
print('制作schoolB的煎饼果子')
class Prentice(SchoolB, SchoolA):
pass
daqiu = Prentice()
daqiu.make_cake()
daqiu.make_noodles()
1.4 多层继承
概述
多个子类一层一层继承属性到到最后拥有所有父类的公开属性
示例
class SchoolA(object):
def make_cake(self):
print('运用制作SchoolA煎饼果子')
class SchoolB(object):
def make_cake(self):
print(f'运用制作SchoolB煎饼果子')
class Prentice(SchoolB, SchoolA):
def make_cake(self):
print('运用Prentice制作煎饼果子')
pass
# 徒孙类
class Tusun(Prentice):
pass
xiaoqiu = Tusun()
xiaoqiu.make_cake()
1.5 调用父类方法super()
二,类属性和实例属性
2.1 私有封装定义
1,封装的意义:
- 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理;
- 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了;
- 对类的属性和方法增加 访问权限控制。
2,私有权限:在属性名和方法名 前面 加上两个下划线 __
- 类的私有属性 和 私有方法,都不能通过对象直接访问,但是可以在本类内部访问;
- 类的私有属性 和 私有方法,都不会被子类继承,子类也无法访问;
- 私有属性 和 私有方法 往往用来处理类的内部事情,不通过对象处理,起到安全作用。
2.2 私有属性和私有方法
概述
私有是直接在方法之外进行定义的
私有方法时通过双下划线 __修饰的
class lei:
#私有属性
age=15
# 私有方法
def __siyou(self):
return lei.age
def ggai(self):
return lei.__siyou(lei)
ll=lei()
print(lei.haed(12,12))
print(ll.ggai())