我正在谈论的示例代码
class A:
def __init__(self):
self.x = 5
def virtual__getX(self):
return self.x
def getY(self):
return self.virtual__getX()+2
class B(A):
def __init__(self):
A.__init__(self)
def virtual__getX(self):
return 20
a=A()
b=B()
print(a.getY())
print(b.getY())
有没有一种方法在python 3中拥有真正的虚拟方法而没有这个真正糟糕的名字" virtual__getX"我需要明确的名字" __ getX"
Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
7
22
如果我从名称中删除虚拟结果
Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
7
7
是否有更好的方法来编写真正的虚拟方法,例如"普通语言"像delphi
答案 0 :(得分:1)
您无法拥有名为__something
的虚拟函数。以双下划线开头的属性被认为是私有的,而python在内部对它们应用了名称修改。
但是,您可以将virtual__getX
重命名为getX
,它可以按预期工作。