2011-01-21 13 views

答えて

6

はそれをきちんと作るためにデコレータを使用してpropertiesしてみてください。

+0

これはおそらく私が解決しようとしている問題の最良の解決策です。 – Joe

1

私はそれを行うための組み込み関数を知らない。また、あなたは「もしそうでない」という表現を使って1行でこれを行うことができます:変数に代入

print my_thing() if callable(my_thing) else my_thing 

は同じように動作します:

my_var = my_thing() if callable(my_thing) else my_thing 
1

これを使用してください。それは簡単で、は常にが "callable"上のすべての可能なバリアントに対して機能します。

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

「callable」のすべての可能なバリアントに興味があります。説明したり、例を挙げたりできますか? – Joe

+1

クラスは呼び出し可能です(オブジェクトをインスタンス化します)。関数は呼び出し可能であり、メソッドは呼び出し可能です。このメソッドは、引数を必要としない呼び出し可能オブジェクトに対してのみ成功しますが(kwargsを受け入れるかもしれません)。 –

+1

これは実際ははるかにpythonicです:試してみて、それが成功すれば、それはアヒルです。それ以外の場合は、もう少しパンチして、それが突っ込むかどうかを確認してください。 –

関連する問題