python学习笔记1:面向对象


前言

今天开始,正式进行CSDN的撰写啦,内容都是按照学习和复习整理的顺序进行撰写的。
如果有撰写的不明确的地方 欢迎大家和我一起讨论。有好的建议也可以提出来哦!


一、面向对象的三大特性

  1. 封装根据职责属性方法 封装到一个抽象的类中
  2. 继承 ** 实现代码的重用**,相同的代码不需要重复的编写
  3. 多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度

二、关于继承

1.如何同时执行类以及父类方法

方法一:如果想执行父类的func方法,这个方法并且子类中也用,那么就在子类的方法中写上:父类.func(对象,其他参数)

方法二:利用super,super().func(参数)

class Aniaml(object):
    type_name = '动物类'

    def __init__(self, name, sex, age):
        self.name = name
        self.age = age
        self.sex = sex

    def eat(self):
        print('吃东西')


class Person(Aniaml):
    def __init__(self, name, sex, age, mind):
        super().__init__(name, sex, age)
        # 这里使用方法二
        self.mind = mind

    # 通过父类名字加点加方法名的方式执行父类同名方法

    def eat(self):
        Aniaml.eat(111)
        #这里使用方法一
        print('%s 吃饭' % self.name)


class Cat(Aniaml):
    pass


class Dog(Aniaml):
    pass


p1 = Person('aaron', '男', 18, '想吃东西')
p1.eat()
print(p1.__dict__)

此处输出为:
在这里插入图片描述

2.多继承中的mro

对于Python中的多继承情况,运行时在搜索对象的属性或方法时,需要遵循一定的顺序规则,这个规则称为:Method Resolution Order (MRO).
下方为一多继承示例:
经典类中采⽤的是深度优先,遍历⽅案. 什么是深度优先. 就是⼀条路走到头. 然后再回来. 继续找下⼀个.

类的MRO: Foo-> H -> G -> F -> E -> D -> B -> A -> C.(->object)
‘’‘python的新式多继承 最后都会继承到object 收尾 下图mro图未体现’‘’

代码如下:

class A:
    pass

class B(A):
    pass

class C(A):
    pass

class D(B, C):
    pass

class E:
    pass

class F(D, E):
    pass

class G(F, D):
    def func1(self):
        print("func1 in G")
    pass

class H:
    def func1(self):
        print("func1 in H")
    pass

class Foo(H, G):
    pass

print(Foo.mro())
#类名加mro()方法 返回list
print(Foo.__mro__)
#类名加__mro__ 返回tuple

f = Foo()
f.func1()
#可以通过mro方法 发现继承顺序为先H再G 因此在 f只运行H中的同名fuc1方法 

运行结果如下,
在这里插入图片描述
同时 我们也可以注意到 最后的class 为object
是因为python的新式多继承 最后都会继承到object 收尾


总结

  • 通过父类名字加点加方法名的方式执行父类同名方法
  • 利用super,super().func(参数)方式执行父类同名方法
  • 多继承 可以通过mro方法 获取继承顺序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值