如何在python中使用original扩展继承的方法
我试图在python中扩展类方法的功能,但我不知道具体如何扩展。下面是一个(明显错误的)python代码示例,它可能解释了我想要做的事情:如何在python中使用original扩展继承的方法,python,oop,inheritance,Python,Oop,Inheritance,我试图在python中扩展类方法的功能,但我不知道具体如何扩展。下面是一个(明显错误的)python代码示例,它可能解释了我想要做的事情: class A(object): def foo(self): return dict({'field1':'value1'}) class B(A): def foo(self): return A.foo().update({'field2':'value2'}) B中的foo扩展应该返回两个字段,A和
class A(object):
def foo(self):
return dict({'field1':'value1'})
class B(A):
def foo(self):
return A.foo().update({'field2':'value2'})
B
中的foo
扩展应该返回两个字段,A
和B
dict.update
方法更新dict
,但返回None
。因此,您需要小心返回dict,而不是update
返回的值(None)
在这种情况下,您可以使用
super(B,self).foo()
或A.foo(self)
:
解决方法是解析继承菱形(由于多重继承而产生)。允许将B
合并到使用多重继承的类结构中。但是要使用超级。如果您希望您的类只支持单一继承,那么
dct = super(B, self).foo()
可以用
dct = A.foo(self)
人们可能希望避免使用多重继承(,)的原因有很多。如果这些原因适用于您的情况,那么使用更简单、更直接的方法并没有什么错,事实上也有充分的理由
dct = A.foo(self)
dict.update
方法更新dict
而不是super
,但返回None
。因此,您需要小心返回dict,而不是update
返回的值(None)
在这种情况下,您可以使用
super(B,self).foo()
或A.foo(self)
:
解决方法是解析继承菱形(由于多重继承而产生)。允许将B
合并到使用多重继承的类结构中。但是要使用超级。如果您希望您的类只支持单一继承,那么
dct = super(B, self).foo()
可以用
dct = A.foo(self)
人们可能希望避免使用多重继承(,)的原因有很多。如果这些原因适用于您的情况,那么使用更简单、更直接的方法并没有什么错,事实上也有充分的理由
dct = A.foo(self)
而不是super