Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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从子类对象访问超类成员的方法_Python_Subclass_Superclass - Fatal编程技术网

Python从子类对象访问超类成员的方法

Python从子类对象访问超类成员的方法,python,subclass,superclass,Python,Subclass,Superclass,注意:我发现这是一个重复的和另一个线程中的一个额外的答案,所以我链接到它的情况下,你想看到这两个 注:由于未正确说明所需内容,此问题标题已更改。以前的标题是:将子类转换为超类的Python等效方法 我试图弄清楚如何模拟(因为据我所知Python不支持)类对象转换。例如,假设我有两个类,sup和sub: class sup() ... def method(self): ... class sub(sup): ... def method(self): ... 我

注意:我发现这是一个重复的和另一个线程中的一个额外的答案,所以我链接到它的情况下,你想看到这两个

注:由于未正确说明所需内容,此问题标题已更改。以前的标题是:将子类转换为超类的Python等效方法

我试图弄清楚如何模拟(因为据我所知Python不支持)类对象转换。例如,假设我有两个类,sup和sub:

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,但无论如何我都应该用大写字母写,也感谢您指出这一点。