Return 一种设置 属性 的 class 的方法
Return a way to set a property of a class
所以我有以下功能:
class Test:
def __init__(self):
self.test = False
def test():
test = Test()
# And now return some way to set the test.test property
所以我希望 test
函数能够 return 以某种方式设置 test.test
我尝试了以下操作:
def test():
test = Test()
return test.test
property = test()
property = True
# Doesn't work, doesn't pass a reference
或者什么可行(但是)
def test():
test = Test()
def set(to):
test.test = to
return set
fnc = test()
# But how do i execute it then
当然,也可以只 return“测试”对象,但我不希望那样,因为那样也可以更改测试对象的其他属性
你可以这样做:
class Test:
def __init__(self):
self.test = False
def change_test_value(self,value):
self.test=value
def test():
test = Test()
test.change_test_value(True)
class Test:
def __init__(self):
self.test = False
def test():
test = Test()
def set_test(val: bool):
test.test = val
return set_test
test()(True) # test.test is now True... somewhere!
请注意,此问题存在一个问题,即虽然您有一个可以更改 test.test
的函数,但实际上您无权访问 test
对象以查看它是否有效。
如果要使 test.test
值可访问而不使封闭的 test
对象可访问,您可以 return 一个 getter 以及一个 setter:
from typing import Callable, Tuple
class Test:
def __init__(self):
self.test = False
def test() -> Tuple[Callable[[], bool], Callable[[bool], None]]:
test = Test()
def get_test() -> bool:
return test.test
def set_test(val: bool) -> None:
test.test = val
return get_test, set_test
get_test, set_test = test()
print(get_test()) # False
set_test(True)
print(get_test()) # True
所以我有以下功能:
class Test:
def __init__(self):
self.test = False
def test():
test = Test()
# And now return some way to set the test.test property
所以我希望 test
函数能够 return 以某种方式设置 test.test
我尝试了以下操作:
def test():
test = Test()
return test.test
property = test()
property = True
# Doesn't work, doesn't pass a reference
或者什么可行(但是)
def test():
test = Test()
def set(to):
test.test = to
return set
fnc = test()
# But how do i execute it then
当然,也可以只 return“测试”对象,但我不希望那样,因为那样也可以更改测试对象的其他属性
你可以这样做:
class Test:
def __init__(self):
self.test = False
def change_test_value(self,value):
self.test=value
def test():
test = Test()
test.change_test_value(True)
class Test:
def __init__(self):
self.test = False
def test():
test = Test()
def set_test(val: bool):
test.test = val
return set_test
test()(True) # test.test is now True... somewhere!
请注意,此问题存在一个问题,即虽然您有一个可以更改 test.test
的函数,但实际上您无权访问 test
对象以查看它是否有效。
如果要使 test.test
值可访问而不使封闭的 test
对象可访问,您可以 return 一个 getter 以及一个 setter:
from typing import Callable, Tuple
class Test:
def __init__(self):
self.test = False
def test() -> Tuple[Callable[[], bool], Callable[[bool], None]]:
test = Test()
def get_test() -> bool:
return test.test
def set_test(val: bool) -> None:
test.test = val
return get_test, set_test
get_test, set_test = test()
print(get_test()) # False
set_test(True)
print(get_test()) # True