内置函数获取可调用对象的值?
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
的功能?
3 个回答
1
用这个吧。它更简单,并且总是适用于所有可能的“可调用”情况。
def valueOrCalledValue(input):
try:
return input()
except TypeError:
return input
1
我不知道有没有现成的函数可以做到这一点。不过,你可以用一句话来实现,使用“如果...否则...”的表达方式:
print my_thing() if callable(my_thing) else my_thing
把结果赋值给一个变量也是一样的效果:
my_var = my_thing() if callable(my_thing) else my_thing
6
试试用属性和装饰器来让代码看起来更整洁。