面向对象,继承,多态,封装1
---恢复内容开始---
继承:
一个类可以被多个类继承,一个类也可以有多个父类,父类里面的方法属性子类都可以用
1.单继承
class Alimone:
#父类 def __init__(self, name, agree, hp, sex): self.name = name self.agree = agree self.hp = hp self.sex = sex def cat(self): #父类方法 print('你好') self.hp+=100 class Dog(Alimone): #继承父类 def __init__(self, name, agree, hp, sex, pi): 使用父类属性的话,子类属性里面页要添加父类的属性 Alimone.__init__(self, name, agree, hp, sex) #使用父类属性, self.pi = pi def cat(self): #子类方法 print('大你') a = Dog('旺财', 2, 300, '女', '泰迪') #实例化子类 print(a.name) 可以调用自己的属性 super(Dog,a).cat() 如果要调用父类的方法,需要使用super函数,里面填子类,和子类对象 print(a.hp) 也可以调用父类的属性
2多继承
class A: 父类 def func(self): print('a') class B: def func(self): print('b') class C(A, B): 继承两个类 pass c = C() c.func() 调用方法是,先查看自己本身有没有,如果自己本身有这个方法,那么就调用自己的方法,如果自己本身没有,就找继承父类的,先找A的,A类有就调用A类的,如果没有在找B类的
"""
多继承寻找名字的顺序:新式类,广度优先,经典类,深度优先
新式类中有个一个。mor的方法,查看广度优先的继承顺序
prthon3中,有个一个super方法根据广度优先的顺序,查找上一类
"""
3.多态
python 天生就是多态的,
因为他有鸭子类型
鸭子类型:鸭子类型不是根据父类来约束,而是自己约束自己
4。封装
封装:广义面向对象就是保护对象,让对象不被外部调用
所以得私有方法都是加双下划线
私有属性
私有方法
类中的静态属性
所有的私有方法都不能在外部调用
class Pereson:
def __init__(self, name, password):
self.name = name
self.__password = password # 把属性私有化,私有属性
def get(self):
return self.__password # 私有属只能在内部使用,只要在类的内部使用私有属性,就会自动的带上下划线类名
a = Pereson('小明', 1233)
print(a.name) # 直接调用不到私有化的属性