面试之——面向对象相关

封装,继承,多态

 

多态

python天生多态

def func(arg):
    arg.send()      #只要有.send()方法,就够了

# 参数: 数字,字符串,类, 对象....
# 鸭子模型指的就是它,  鸭子.呱呱叫(arg.呱呱)

super

super() 函数和父类没有实质性的关联。

super 的工作原理如下:

def super(cls, inst):
    mro = inst.__class__.mro()
    return mro[mro.index(cls) + 1]

其中 cls 代表类, inst 代表实例, super 函数做了两件事:

1. 获取实例对象 inst 的类的 MRO 列表

2. 查找 cls 在当前 MRO 列表中的 index ,并返回它的下一个类,即 mro[index + 1]

当使用 super(cls, inst) 时, Python 会在 inst 的 MRO 列表上搜索 cls 的下一个类. 可以看出, 事实上 super 函数和父类没有实质性的关联.

静态字段

静态字段和函数都是在类创建的时候创建一次

class Foo:
    name = 'zhou'
    print(name)       # 创建类的时候,就会打印

    def func(self):
        return 'xx'  

 

posted @ 2018-05-12 21:09  静静别跑  阅读(89)  评论(0)    收藏  举报