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?
valueOrCalledValue
Попробуйте свойства с использованием декораторов, чтобы привести его в порядок.
Используйте это.Это проще, и всегда работает для всех возможных вариантов на «вызываемой».
def valueOrCalledValue(input): try: return input() except TypeError: return input
Я не знаю встроенной функции для этого.В качестве альтернативы, вы можете сделать это в одной строке, используя выражение «if else»:
print my_thing() if callable(my_thing) else my_thing
присвоение переменной переменной работает так же: