python之路——24

复习

1.面向对象编程
思想:角色的抽象,创建类,实例化,操作实例
2.面向对象的关键字
1.类的静态属性,存储在类的命名空间
2.类名.方法(对象),对象.方法
3.对象可以使用静态变量;类不可以使用对象里的属性
3.组合
一个类的对象是另一个对象的属性

学习内容

1.继承
1.一个类可以被多个类继承
一个类可以继承多个父类(python独有)
2.python3 --新式类,没有继承父类默认继承object类
3.子类拥有init时,不需要调用父类;同样,拥有待调用方法,也就不需要调用父类
4.父类中没有的属性(方法),子类中出现,叫派生属性(派生属性)
5.继承——减少代码的重复
6.继承表示一种子类是父类的关系
7.新式类继承顺序:广度优先
print(类名.mro) # 显示类的调用顺序,只在新式类中存在
经典类采用深度优先
8.super的本质:根据调用者节点位置的广度优先顺序来的

代码区

1. 子类,父类调用关系

class Animal:
    def __init__(self,animal):
        self.animal = animal
        print('in animal init')
        self.func()
    def eat(self):
        print('eat something')
    def drink(self):
        print('drink water')
    def func(self):
        print('in animal func')

class Dog(Animal):
    def __init__(self,kind):
        self.kind = kind
        print('in dog init')
    def guard(self):
        print('guard home')

class Bird(Animal):
    def egg(self):
        print('egg')
    def func(self):
        print('in bird func')

a1 = Dog('teddy')
# print(Dog.animal)
a2 = Bird('bird')

2.

class Animal:
    def __init__(self,age):
        self.age = age
    def eat(self):
        print('eat something')
    def drink(self):
        print('drink water')
    def func(self):
        print('in animal func')

class Dog(Animal):
    def __init__(self,age,kind):
        Animal.__init__(self,age)
        #super().__init__(age)   # 只在新式类中有,python3中所有类都是新式类
        self.kind = kind
    def guard(self):
        print('guard home')

class Bird(Animal):
    def egg(self):
        print('egg')
    def func(self):
        Animal.func(self)
        print('in bird func')

a2 = Bird(11)
# a2.func()
super(Bird,a2).func() # 调用了父类的func

猜你喜欢

转载自www.cnblogs.com/wan2-0/p/10742138.html