我有一个Python 3程序,它具有最终从单个基类“RootClass”派生的类层次结构。我希望能够从任何类的对象中设置值,并从这些类的任何其他对象中查看该值。我目前使用的解决方案使用全局变量,该变量可以通过'RootClass'中定义的对象方法访问。来自所有派生类的Python访问基类数据
file1.py:
_myVal= None # the global variable
class RootClass:
def setVal(self, y):
global _myVal
_myVal= y
def getVal(self):
return _myVal
file2.py:
from file1 import RootClass
class A (RootClass):
pass
class B (A):
pass
class C (B):
pass
class D (RootClass):
pass
if __name__ == "__main__":
objA = A()
objB = B()
objC = C()
objD = D()
objD.setVal(100)
print(objA.getVal())
print(objB.getVal())
print(objC.getVal())
print(objD.getVal())
执行:
CMD> python file2.py
100
100
100
100
我认识的全局变量在一般皱着眉头,但没有别的,我认为看起来很干净简单。
我考虑的另一个选择是制作一个具有set/get方法的'ValClass'对象。然后,RootClass中的set/get方法将调用该对象的set/get方法。但这意味着我必须仍然创建ValClass对象,并确保它可以从其他所有对象访问,所以我基本上回到了拥有全局的对象。
什么是解决这个问题的更好/更多Pythonic方法?
嘛,就是这样简单作为我的解决方案并避免了全局性。我很尴尬,我没有想到这一点。谢谢! – Craig