通常,可以从派生类调用 Python 中的基类方法,就像调用任何派生类函数一样:
class Base:
def base_method(self):
print("Base method")
class Foo(Base):
def __init__(self):
pass
f = Foo()
f.base_method()
但是,当我使用该函数动态创建一个类时type
,我无法在不传入self
实例的情况下调用基类方法:
class Base:
def base_method(self):
print("Base method")
f = type("Foo", (Base, object), { "abc" : "def" })
f.base_method() # Fails
这会引发 TypeError:TypeError: base_method() takes exactly 1 argument (0 given)
如果我显式传递一个self
参数,它会起作用:
f.base_method(f)
为什么self
调用基类方法时需要显式传递实例?