gpt4 book ai didi

python - 在运行时在 python 中覆盖方法

转载 作者:太空宇宙 更新时间:2023-11-04 11:04:17 27 4
gpt4 key购买 nike

我有运行多次的方法。我不想在里面嵌套 ifs,而是想覆盖方法然后运行它。我知道我可以通过简单的赋值来覆盖类方法,但是覆盖方法看不到私有(private)成员:

class X:
def __init__(self, a):
self.a = a
self.__b = a

def m(self):
print self.a
print self.__b

def a2(self):
print (2*self.a)
print (2*self.__b)

x = X(2)
x.m()
X.m = a2
x.m()

输出:

2
2
4
Traceback (most recent call last):
File "t.py", line 17, in <module>
x.m()
File "t.py", line 12, in a2
print (2*self.__b)
AttributeError: X instance has no attribute '__b'

有机会解决这个问题吗? Google 没有显示答案:(

最佳答案

以双下划线开头的类中的属性是名称损坏的。除非您确定需要它们,否则切勿使用它们。它们没有任何隐私,因此您应该改用单个下划线。

您遇到此问题的原因是 a2() 中的属性访问名称损坏。

关于python - 在运行时在 python 中覆盖方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2802896/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com