有人可以解释从BaseClass
派生的以下类定义之间的区别,以及在什么情况下定义它们的方式很重要:
class BaseClass(object):
def __init__(self):
# ...
def as_dict(self):
# ...
class SomeClass(BaseClass):
def as_dict(self):
# Does this somehow change the method compared to 'AnotherClass.as_dict()' below
return super(SomeClass, self).as_dict()
class AnotherClass(BaseClass): pass
SomeOtherClass = BaseClass
答案 0 :(得分:2)
由于您向as_dict
添加了SomeClass
方法,该方法包含单 super
来电,因此该方法的最终行为没有区别类。总的来说,您已经添加了一些不必要的函数调用,这是有区别的。
AnotherClass
的行为与SomeClass
相似,因为SomeClass
在as_dict
中没有做任何不同的事情。它像往常一样继承BaseClass
的方法。
SomeOtherClass
只是 BaseClass
的另一个名称,你不是在那里创建一个子类关系,只是附加另一个你可以引用那个类的名字
答案 1 :(得分:0)
这是使用BaseClass
使用不同的名称。
class AnotherClass(BaseClass): pass
这是使用BaseClass
,但修改方法" as_dict
"。在as_dict
方法中,您可以执行任何操作( ie.modify发送到此方法的参数)然后使用as_dict
super(SomeClass, self).as_dict()
方法的常用函数
class SomeClass(BaseClass):
def as_dict(self):
# Does this somehow change the method compared to 'AnotherClass.as_dict()' below
return super(SomeClass, self).as_dict()
这只是将BaseClass
分配给SomeOtherClass
,这意味着他们可以通过两个关键字使用BaseClass
。
SomeOtherClass = BaseClass