Python 変数の本質: 割り当て。
1 通常の Python 変数 (クラスに関係しない変数) は、値を代入すると変数が存在し、読み書きできるようになり、理解しやすくなります。
2 Python クラスの変数 (クラス変数およびインスタンス オブジェクト変数) は、どこかに特定の方法で割り当てられます。つまり、それらは存在し、読み書き可能です。
2.1 Python クラス変数には値が代入されます
(1) クラスの設計において
クラス内外の変数名前を割り当てることができます。
# DEF は、クラス オブジェクトのポイントツーオーダー変数名、つまりクラス名の名前を通じて割り当てることができます。
(2) プログラムでは、クラスオブジェクト(クラス名)のドット演算により、クラス名に値を代入することもできます。
関連する推奨事項: 「
Python ビデオ チュートリアル」2.2 Python インスタンス オブジェクト変数には値が割り当てられます
(1) クラス設計
変数名には、def のセルフドット操作を通じて値を割り当てることができます。必ずしも init だけでなく、呼び出される他のメソッド関数でも同様です。
(2) プログラムでは、インスタンス オブジェクトのドット演算によって
変数名に値を割り当てることができます。
一般に、クラス内の変数はクラス設計 (2.1(1) および 2.2(1)) によって完成します。クラスへの変数の追加には、通常、メソッド (2.1(2) および 2.2(2)) は使用されません。 ). 、完了 (2.1(2) および 2.2(2)) は、クラスの継承を通じて実現できます。
class aa: w = 10 def __init__(self): self.x = 11 self.y = 12 def add(self): return self.x + self.y a = aa() print a.add() #下边两条指令各起何作用?结果是输出两个 20 么?还是两个13?还是? aa.w = 20 a.w = 13 print aa.w, a.w #程序继续增加如下,怎样理解这t和q呢?他们是___变量 a.t = 14 a.q = 15 print a.t, a.q #程序继续增加如下,怎样理解这m和n呢?他们是___变量 aa.m = 30 aa.n = 40 print aa.m, aa.n #好了再来个提升吧 #程序继续增加,下列三个print语句都能正确执行么?为何? b = aa() print b.x,b.y print b.t,b.q print b.m,b.n
上記の問題を解決するには、まずクラスがクラス変数を持ち、インスタンスがインスタンス変数を持つのはいつなのかを理解する必要があります。
第二に、クラス変数の役割と、インスタンス変数のスコープに誰が関与しているかを深く理解する必要があります。
以上がPythonのクラス変数とインスタンス変数の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。