我试图将值从类中的一个函数传递给类中的另一个函数。下面是我要实现的一些简化代码。
class test:
def __init__(self):
self.differentvalue = 0
def set(self, value):
print(value)
self.differentvalue = value #this is not the same value as defined above - i.e. this is a new variable created in foo class i believe
class foo:
def __init__(self):
test.set(self, 5)
if __name__ == '__main__':
foo()
我不想叫__init__
,所以test().set(5)
是不可行的。
干杯, 肖恩
答案 0 :(得分:0)
您有两个选择
选项1,如果您需要为每个Test实例的differtvalue保留不同的上下文,则为最佳选择
class Test:
def __init__(self):
self.differentvalue = 0
def set(self, value):
self.differentvalue = value
class foo:
def __init__(self):
test = Test()
test.set(5)
选项2,如果需要在所有测试类中保持不同值的最新值,则为最佳选择
class Test:
__DIFFERENTVALUE = 0
def __init__(self):
pass
@staticmethod
def set(value):
Test.__DIFFERENTVALUE = value
class foo:
def __init__(self):
Test.set(5)
答案 1 :(得分:0)
您可以定义一个值为None
的类变量,然后在第一次调用setter时为其分配一个值。进一步调用设置器将不会更改该值。
在以下示例中,__init__
中不需要Test
方法。
class Test:
differentvalue = None
@classmethod
def set(cls, value):
if value is not None and Test.differentvalue is None:
Test.differentvalue = value
class foo:
def __init__(self):
Test.set(5)
if __name__ == '__main__':
foo()
print(Test.differentvalue)
Test.set(12)
print(Test.differentvalue)
输出:
5
5 # the value did not change