内置函数来获取对象的值(如果可调用)?

2024-05-08 21:43:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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所做的那样?在


Tags: selfinputstringreturnifdeffunctionclass
3条回答

尝试使用装饰器使其整洁。在

我不知道有什么内置函数可以做到这一点。或者,可以使用“if-else”表达式在一行中执行此操作:

print my_thing() if callable(my_thing) else my_thing

将其分配给变量的方式相同:

^{pr2}$

用这个。它更简单,总是适用于“callable”上所有可能的变体。在

def valueOrCalledValue(input):
    try:
        return input()
    except TypeError:
        return input

相关问题 更多 >