主动调用其它类的成员 --Python3

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons
1、主动调用其它类的成员方式一
class Base(object):
    def f1(self):
        print('Base.f1()')
        pass

class Foo(object):
    def f1(self):
        Base.f1(self)

obj = Foo()
obj.f1()

通过对象调用实例方法:

obj = Base()
obj.f1()

等价于用类这样调用实例方法(不常用):

obj = Base()
Base.f1(obj)

总结:实例方法的调用可以不通过对象去调用,可以通过类调用实例方法,但是需要手动传入对象,

Base.实例方法(自己传入self)

2、主动调用其它类的成员方式一

单继承:

# coding:utf-8
class Base(object):
    def f1(self):
        print('Base.f1()')
        pass

class Foo(Base):
    def f1(self):
        super().f1()

obj = Foo()
obj.f1()
'''
Base.f1()
'''

多继承:

# coding:utf-8
class Base(object):
    def f1(self):
        print('Base.f1()')
        pass

class Foo1(object):
    def f1(self):
        super().f1()

class Foo2(object):
    def f1(self):
        print('Foo2.f1()')

class Info(Foo1, Foo2):
    pass

obj = Info()
obj.f1()
'''
先找Info类中有无f1方法,Info类中没有按照继承顺序,找下一个类Foo1。
Foo1中找到f1方法,即Info类执行Foo1中的f1方法。
Foo1中的f1方法执行super().f1(),super().f1()即按照Info类的继承顺序找下一个类,
执行Foo2类中的f1方法
'''

猜你喜欢

转载自blog.csdn.net/Thanlon/article/details/94389002