我有一个python3程序,它的类的层次结构最终都是从一个基类“RootClass”派生的。我希望能够从任何类的对象中设置一个值,并从这些类的任何其他对象中查看该值。我目前的解决方案是使用一个全局变量,该变量由“RootClass”中定义的对象方法访问。你知道吗
文件1.py:
_myVal= None # the global variable
class RootClass:
def setVal(self, y):
global _myVal
_myVal= y
def getVal(self):
return _myVal
文件2.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
我意识到globals通常是不受欢迎的,但我认为没有什么比它更干净和简单的了。你知道吗
我考虑的另一个选项是创建一个具有set/get方法的“ValClass”对象。然后RootClass中的set/get方法将调用该对象的set/get方法。但这意味着我仍然必须创建ValClass对象,并确保它可以从所有其他对象访问,所以我基本上回到了全局。你知道吗
解决这个问题的更好的/更像Python的方法是什么?你知道吗
如果希望它看起来更像python,可以使用属性:
只需将作用域设置为类的\u myVal作用域
相关问题 更多 >
编程相关推荐