类的实例创建的时候会自动运行魔法方法(一般也会称之为构造函数)

子类会自动继承父类的函数和属性,但是子类若是重写了构造函数,就会覆盖父类的构造函数。若想继续调用父类的构造函数就需要调用未绑定的父类方法或使用super函数

调用未绑定的父类方法:

  1. class Shark (Fish):
  2. def __init__(self):
  3. Fish.__init__(self) #此处调用了未绑定的父类方法
  4. pass

使用super函数

  1. class Shark (Fish):
  2. def __init__(self):
  3. super().__init__() #此处调用了未绑定的父类方法
  4. pass

其中super函数是较为推荐的方法,子类若是更换父类更为便捷。

多继承

一个子类可以继承多个父类。形如:

  1. class Shark (Fish1,Bash1,Bash2):
  2. pass

但一般不推荐这样,代码较为混乱。可能会出现不可预见的错误。

组合

可以横向组合多个类

  • 把类的实例化放到新类中,就把旧类组合一起了。
  • 优点:不需要多重继承,没有造成代码混乱的风险。 ```python

    组合举例

    class Turtle: def init(self, x):
    1. self.num = x

class Fish: def init(self, x): self.num = x

class Pool: def init(self, x, y): self.turtle = Turtle(x) self.fish = Fish(y)

  1. def print_num(self):
  2. print('水池里一共有乌龟 %d 只, 小鱼 %d 条' % (self.turtle.num, self.fish.num))

if name == ‘main‘: pool = Pool(1, 10) pool.print_num() ```