Python从子类对象访问超类成员的方法
注意:我发现这是一个重复的和另一个线程中的一个额外的答案,所以我链接到它的情况下,你想看到这两个 注:由于未正确说明所需内容,此问题标题已更改。以前的标题是:将子类转换为超类的Python等效方法 我试图弄清楚如何模拟(因为据我所知Python不支持)类对象转换。例如,假设我有两个类,sup和sub:Python从子类对象访问超类成员的方法,python,subclass,superclass,Python,Subclass,Superclass,注意:我发现这是一个重复的和另一个线程中的一个额外的答案,所以我链接到它的情况下,你想看到这两个 注:由于未正确说明所需内容,此问题标题已更改。以前的标题是:将子类转换为超类的Python等效方法 我试图弄清楚如何模拟(因为据我所知Python不支持)类对象转换。例如,假设我有两个类,sup和sub: class sup() ... def method(self): ... class sub(sup): ... def method(self): ... 我
class sup()
...
def method(self):
...
class sub(sup):
...
def method(self):
...
我知道,由于方法同时存在于超类和子类中,它将被重写。但我想实现这样的目标:
sub obj()
((sup) sub).method()
为了调用超类方法而不是子类方法。在Java中,我会这样做,但我读过,python没有这个功能(如果我错了,请纠正我,这是我到目前为止所研究的),因此我正在寻找一种等效的方法来实现这一点。您可以将当前对象传递给基类:
o = sub()
sup.method(o) # this will call method of the base class
还有一个提示:在python中,用大写字母编写类型是很常见的,因此在您的示例
Sub
和Sup
中,请参见Sup.method(obj)。
,IMHOI不认为((Sup)Sub.)method()
也会跳过Java中的子实现,就我所知,这不是强制转换的工作方式。你能给出一些背景吗,你到底想做什么?为什么要跳过子实现?你在寻找例如super
?@jornsharpe:C#中,它只调用基方法(如果没有定义为虚拟的话)@darryg:我认为OP不想从子类调用它,而是从子类之外的代码调用它谢谢@Alexander Kosik。我显然还没有完全理解self的工作方式。我现在明白了。我已将此标记为答案。还感谢您指出PEP8,尽管我还没有深入研究python,但无论如何我都应该用大写字母写,也感谢您指出这一点。