小甲鱼——类和对象P3-P4

子类继承父类的方法
决定一个类是不是子类在于括号中是否有父类名。
如果子类定义与父类同名的方法或属性,那么在实例化调用时会自动覆盖父类对应的方法或属性。
如果在被覆盖的方法中,仍想使用父类的方法(只是子类该方法中新加入一些内容),那么可用到两种方法:

  • 使用未绑定分父类方法
class A:
    def fun(self):
        print("父类方法")

class B(A):
    def fun(self):
        A.fun(self)  # 此时的self是B类实例化对象传入,所以说是未绑定的父类方法
        print('子类方法')
In[1]:  a = A()
In[2]:  a.fun()
父类方法
In[3]:  b = B()
In[4]:  b.fun()
父类方法
子类方法
  • 使用super函数
    不用定义基类的名字,如果有多重继承,它可以自动找出一层层基类对应的方法。
    这样如果要改变子类的话,就不用像上一种方法一样,改变所有父类的名字了
class A:
    def fun(self):
        print("父类方法")

class B(A):
    def fun(self):
        super().fun()
        print('子类方法')

多重继承

class DerivedClassName(Base1,Base2,Base3):

组合

把横向关系的类放到一起(没有继承关系)
*还有点没弄清楚

类、类对象和实例对象

  • 类对象原有属性A,如果将实例对象的属性A重新赋值,那么在该实例对象的属性中,属性A的新值会覆盖原有值,即使类对象的属性A重新赋值了,该实例对象的属性A的值还是不变。
  • 属性和方法不能用相同的名字,不然属性会覆盖方法。
  • 类中不要定义太多属性和方法,多利用组合和继承机制完成。

绑定概念

Python严格要求方法需要在有实例时才能被调用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容