2
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ありますか?

4

3 に答える 3

6

デコレータを使用してプロパティを整理してみてください。

于 2011-01-21T11:56:51.117 に答える
1

これを使って。これはよりシンプルで、「callable」の可能なすべてのバリアントに対して 常に機能します。

def valueOrCalledValue(input):
    try:
        return input()
    except TypeError:
        return input
于 2011-01-21T12:57:31.043 に答える
1

私はそれを行うための組み込み関数を知りません。または、「if else」式を使用して 1 行でこれを行うこともできます。

print my_thing() if callable(my_thing) else my_thing

変数への代入も同じように機能します。

my_var = my_thing() if callable(my_thing) else my_thing
于 2011-01-21T11:56:46.267 に答える