我想把一个数据描述符对象传递给一个函数。相反,传递__get__()
的结果。你知道吗
数据描述符类:(代码是示例代码)
import time
class evenOdd():
def __get__(self, obj, owner):
return "even!" if (time.mktime(time.localtime()) % 2 == 0) else "odd!"
class testObject():
a = evenOdd()
下面的代码打印“偶数!奇怪!甚至!奇怪!……”地址:
tester = testObject()
for i in range(10):
print(tester.a, end=" ")
time.sleep(1)
但是,将for循环放在它自己的函数中会生成“偶数!甚至!甚至!甚至!……”或者“奇怪!奇怪!奇怪!奇怪!……”地址:
def printer(data):
for i in range(10):
print(data, end = " ")
time.sleep(1)
tester = testObject()
printer(tester.a)
如何将数据描述符对象传递给函数,而不是__get__()
的结果?你知道吗
编辑:我发现了一个基于jornsharpes响应的解决方法,它有点像我想要的那样:
def printer(data):
for i in range(10):
print(data(), end = " ")
time.sleep(1)
tester = testObject()
printer(lambda: tester.a)
不幸的是,这意味着printer()
不再适用于字符串。如果可能的话,我想printer()
接受我的数据描述符对象和常规字符串。你知道吗
使用jornsharpe和L3viathans的响应,我编写了以下代码,完全满足了我的需要:
这将产生:
谢谢你的帮助!你知道吗
相关问题 更多 >
编程相关推荐