2010-12-26 8 views
0

Javaの背景から来ているので、クラスに特定の属性を設定してコンストラクタでそれらを設定したいと思っています。Pythonでクラスをインスタンス化する - 属性を設定する

現在、グローバルキーワード を使用しています。

def class A(): 

global attribute1 
global attribute2 

__init__(): 
    attribute1 = 1 
    attribute2 = 2 

これを行う良い方法はありますか?私が尋ねる理由は、すべての属性を「グローバル」に設定するのが正しいかどうかわからないからです。

EDIT:また、属性にアクセスするたびに、self.attribute ...が必要です。これは必要ですか?あなたはいつもthis.attributeを必要としません。

+1

はい、常に 'self.attribute'が必要です。それはあなたが参照している変数がどこにあるかを明確にします。 –

+2

あなたのサンプルコードは有効な構文でも、作業に近いところでもないので、Javaについて知っていることを忘れてしまった後、Pythonの本やチュートリアルを読んでください。 –

答えて

4

正しい方法は、コンストラクタに属性を追加してインスタンスに追加することです。あなたの2番目の質問については

>>> class A(object): 
... def __init__(self, attribute1, attribute2): 
...  self.attribute1 = attribute1 
...  self.attribute2 = attribute2 
... 

>>> a = A(1, 2) 
>>> a.attribute1 
1 
>>> a.attribute2 
2 

、はい、あなたはそれを参照するために、インスタンス内self.attributeを使用する必要があります。

+0

これは多くの意味があります。好奇心から、いつグローバルキーワードが役立つでしょうか?属性を変更したいときは? – Karan

+0

グローバルキーワードは、グローバル参照を変更(割り当て)する必要がある場合に使用します。そうしないと、新しいローカルが作成されます。 – Keith

関連する問題