この質問はスタイルの問題です。属性はPythonではプライベートではないため、次のようなものを使用してクラスの外部で直接アドレス指定することは適切で一般的な方法my_obj.attr
ですか? それとも、get_attr()
C ++で通常行われているように、メンバー関数を介して行う方がよいのでしょうか?
質問する
123 次
3 に答える
12
プロパティを使用したいようです:
class Foo(object):
def __init__(self, m):
self._m = m
@property
def m(self):
print 'accessed attribute'
return self._m
@m.setter
def m(self, m):
print 'setting attribute'
self._m = m
>>> f = Foo(m=5)
>>> f.m = 6
setting attribute
>>> f.m
accessed attribute
6
これは、変数にアクセスするための最も適応的な方法です。単純なユース ケースでは、これを行う必要はありません。また、Python では、後でいつでもプロパティを使用するように設計を変更できます。費用はかかりません。
于 2013-06-06T08:50:04.900 に答える
2
最初にクラスのインスタンスを作成します。
myinstance = MyClass()
myinstance.attr
そうしないAttributeError: class MyClass has no attribute 'attr'
と、やろうとしたときのようなエラーが発生しますMyClass.attr
于 2013-06-06T08:48:41.697 に答える
0
はい、それは一般的な方法です。属性の取得方法をより詳細に制御する必要がある場合は、__getattribute__
and/orの使用を検討して__getattr__
ください。
于 2013-06-06T08:54:26.957 に答える