面向对象,继承,多态,封装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) # 直接调用不到私有化的属性
 

猜你喜欢

转载自www.cnblogs.com/python884/p/9987123.html