如果可调用,内置函数可以获取对象的值?

时间:2011-01-21 11:46:32

标签: python callable

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 个答案:

答案 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