人工智能学习之python 继承 多态 小知识点


如果仅仅只是继承 子类自己没有任何操作 毫无意义 所以要进行重写操作  重写也叫作覆盖
重写:例如魔法方法   与父类方法名相同  在调用时就近原则
继承里面注意就近原则  会覆盖父类的同名方法或属性
单继承: 只继承一个父类
多继承 class 子类名(父类1,父类2)

在Python中,所有类默认继承object类,object类是顶级类或基类;其他子类叫做派生类。
其他父类 为基类 顶级类只能是object

继承:一个类从另一个已有的类获得其成员的相关特性

多层继承: 一级一级的 父类 子类 孙子类  多层级
多继承: 如果多个父类中有同名方法,子类默认就近原则使用第一个父类的同名方法
             如果子类自己重写了重名方法,则就近原则 使用自己的

子类调用父类同名方法调用: 注意:: 如果子类就是要调用父类的同名方法 可以在子类内部使用super().方法名() 或者 用父类名.方法名(self)      
                     但super 只能掉 第一个父类的同名函数                                   在外部使用父类名.方法名(子类对象)

查看继承关系:  类名.mro() 可以查看继承关系  :类名.__mro__可以查看继承关系

派生:从一个已经有的类产生一个新的类,称为派生
继承与派生实际上是从2个方向来进行描述同一个东西的

多态: 同一个函数,随着传入的子类对象的不同,可以实现不同的功能         同一种事务不同的状态  例如所有学生听课
python中的多态为伪多态    有了多态 更容易写出通用的代码  提高代码的可拓展性

真实情况的多态的前提:    继承 ,   重写,     父类引用指向子类对象
                                       (python不继承也可以 所以为伪多态)  所以就增加一个判断 isinstance  
               查看此类是否继承父类if isinstance(self,ani : 父类名)           ani = 子类名()       :后面是限制因素   在python后面是提示 得用if 进行限制
class Person(object):
    def let_ani_jiao(self, ani: Animal):  # 正常多态下:后为限制
        if isinstance(ani, Animal):  # 判断 ani 是否是A的事例对象
            ani.jiao()
        else:
            print(f"{ani}不是动物")


# 2.再根据类创建对象
zs = Person()
# 3.实现多态
zs.let_ani_jiao(Dog())  # 父类引用=子类对象 ani = Dog()     ani是个对象  Dog是个类
 
isinstance函数用于检测是否是实例对象 

python 3 对比2  括号里的可以省略   class(object)     super(当前类名, self).方法()      括号里的可以省略


实例属性  之前学的属性 属于对象 成员属性  实例属性 ;实例属性只能 对象和 self调用   比如 自己的水杯

类属性: 类名.类属性名   属于类的  所有对象公用的  对象只能读取  添加与修改只能类进行操作 类.类属性  在类中方法外添加修改
                eg饮水机     类所拥有的属性  对象只能访问  对象.类属性  不能修改  (本质上是创建了一个与类属性同名的实例属性)

类方法 :  对象可以直接调用   类也可以直接调用  对象.类方法()   类名.类方法()   最大好处 不需要创建对象  
              所有对象也可以直接调佣
特点:第一个形参位置 cls  也不需要传参    输出cls 为类名  self 则为地址  cls.类属性 可以修改类属性的名
装饰器@classmethod   加上self  就变为cls    实例方法脑袋上加装饰器@classmethod

@staticmethod 静态方法  对象也可以调用   建议 用类名调用  形参位置没有self 也没用cls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值