class Thing():
xyz = "I'm a string"
class Truc():
def xyz(self):
return "I'm a function"
def valueOrCalledValue(input):
if callable(input):
return input()
else:
return input
thing = Thing()
print valueOrCalledValue(thing.xyx)
>>> "I'm a string"
truc = Truc()
print valueOrCalledValue(truc.xyz)
>>> "I'm a function"
是否有内置函数执行valueOrCalledValue
所做的事情?
答案 0 :(得分:6)
尝试properties使用装饰器使其整洁。
答案 1 :(得分:1)
我不知道有任何内置函数可以做到这一点。或者,您可以使用“if else”表达式在一行中执行此操作:
print my_thing() if callable(my_thing) else my_thing
将其分配给变量的方式相同:
my_var = my_thing() if callable(my_thing) else my_thing
答案 2 :(得分:1)
使用它。它更简单,始终适用于“可调用”的所有可能变体。
def valueOrCalledValue(input):
try:
return input()
except TypeError:
return input