2016-09-13 13 views
0

私は、関数を保持する変数を宣言したいクラスを作成しています。私はいくつかの情報を処理した後に呼び出したいと思います。この状況でプロパティデコレータを使用する方法を知っていません。 私はすでにこのコードを持っている:私はこのコードでself.callbackため@property@property.setter@property.getterデコレータを使用する方法@ property.setterデコレータを使用してクラスに関数を渡す

class MyClass: 
    def __init__(self): 
     self.callback = None 
    def run(): 
     #do something here... 
     result = self.callback(result) 
     print(result) 

def func1(result): 
    result = result ** 2 
    return result 

def func2(result): 
    result = result ** 4 
    return result 


class1 = MyClass() 
class1.callback = func1 
class1.run() 
class1.callback = func2 
class1.run() 

私の質問はありますか?

+3

なぜあなたはプロパティを使用する必要があると思いますか?あなたが今持っているコードの*問題点は何ですか? – jonrsharpe

+0

thats私はプロパティデコレータを使って作業する方法を学びたいので、ここで@propertyを使用するのは良い方法ではありませんか? –

+0

これは必要ないためです。バリデーションルールや他の実際の*理由*がない限り、属性へのアクセスが不明瞭になることはありません。あなたが勉強したいだけなら、なぜこの質問をするのではなく、チュートリアルを読んでいないのですか? – jonrsharpe

答えて

0

私はこのコードに基づいて、propertiesの必要性を見ていませんが、それはとにかくここにあります。

class MyClass: 
    def __init__(self): 
     self.__callback = None 

    @property 
    def cb(self): 
     return self.__callback 

    @cb.setter 
    def cb(self, new_cb): 
     self.__callback = new_cb 
関連する問題