您的位置:首页 > 编程语言 > Python开发

python基础知识整理5——类方法、静态方法和继承相关问题

2018-10-26 21:57 726 查看

类方法和静态方法

  • method

    - 通过实例调用
    - 可以引用类内部的任何属性和方法
  • classmethod

    - 无需实例化
    - 可以调用类属性和类方法
    - 无法取到普通的成员属性和方法
  • staticmethod

    - 无需实例化
    - 无法渠道类内部的任何属性和方法,完全独立的一个方法

继承相关问题

  • 什么是多态
class Animal:
def run(self):
print('animal running')
​
class Lion(Animal):
def run(self):
print('lion running')
​
class Tiger(Animal):
def run(self):
print('tiger running')
​
class LeoTiger(Lion, Tiger):
pass
​
cub = LeoTiger()
isinstance(cub, Lion)
isinstance(cub, Tiger)
  • 多继承
    - 方法和属性的继承顺序:
    Cls.mro()

    - 菱形继承问题
继承关系示意
菱形继承
A.foo()
/   \
B     C.foo()
\   /
D.mro()  # 方法的继承顺序,由 C3 算法得到
  • Mixin: 通过单纯的 mixin 类完成功能组合,所有继承的类的功能不会有任何的交叉
  • super
class A:
def __init__(self):
print('enter A')
self.x = 111
print('exit A')
​
class B(A):
def __init__(self):
print('enter B')
self.y = 222
A.__init__(self)
# super().__init__()
print('exit B')
​
class C(A):
def __init__(self):
print('enter C')
self.z = 333
A.__init__(self)
# super().__init__()
print('exit C')
​
class D(B, C):
def __init__(self):
print('enter D')
B.__init__(self)
C.__init__(self)
# super().__init__()
print('exit D')
​
d = D()
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: