2009-02-27 32 views
9

pythonでは、クラスのメンバー変数名と同じ名前のプロパティを作成することは可能ですか?例えばクラスメンバー名と同じ名前のpythonプロパティを作成する

Class X: 
    ... 
    self.i = 10 # marker 
    ... 
    property(fget = get_i, fset = set_i) 

どうすればいいのか教えてください。私がそうするならば、マーカーで文の私はassingmため、スタックオーバーフローを取得しているため

答えて

21

はpythonでメンバ変数名

番と同じ名前のプロパティを作成することは可能ですプロパティ、メンバーおよびメソッドはすべて同じ名前空間を共有します。マーカーで

声明私は、スタックオーバーフロー明らか

を取得します。あなたはプロパティiのセッターを呼び出すiを設定しようとします。これは、プロパティiのセッターを呼び出すiを設定しようとします... ad stackoverflowum。

いつものパターンは「_」でそれを付けることによって、バックエンドの値のメンバーは、従来非公開にすることです:

class X(object): 
    def get_i(self): 
     return self._i 
    def set_i(self, value): 
     self._i= value 
    i= property(get_i, set_i) 

は、新しいスタイルのオブジェクト(サブクラス「オブジェクト」)を使用する必要があります 'のプロパティが正しく動作するようにします。

+0

+1、それにビートしてください:) – Kiv

+1

-1:ドキュメントを引用することを忘れないでください:http://docs.python.org/library/functions.html#property –

+2

+1 "ad stackoverflowum" –

関連する問題