Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用original扩展继承的方法_Python_Oop_Inheritance - Fatal编程技术网

如何在python中使用original扩展继承的方法

如何在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和

我试图在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
和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