Python学習ノート(十五):類基礎
2141 ワード
Mark Lutz著の「Python学習マニュアル」をチュートリアルに、毎日1時間ほど勉強し、2週間で完成するように努力しています.---前に書いてあると
2013-7-24 23:59学習ノート
1,Pythonの多くのOOP物語は式:objectに簡略化できる.attributeクラスが有効になっている場合、attributeが初めて現れた場所を見つけるために、PythonはまずObjectを検索し、次にそのオブジェクトの上のすべてのクラスをインストールし、下から上へ、左から右へ検索します.
2,クラスの関数を呼び出すと,常にクラスのインスタンスが隠されている.インスタンスにアタッチされたプロパティは、それらのインスタンスにのみ属しますが、クラスにアタッチされたプロパティはすべてのサブクラスとインスタンスで共有されます.
3 defと同様にclassも実行可能文であり、実行時に新しいクラスオブジェクトが生成され、classヘッダの変数名にコピーされます.class文内の最上位付与文(defではない)は、クラスのプロパティを作成し、すべてのインスタンスを共有します.メソッド内でselfプロパティに値を割り当てると、各インスタンス独自のプロパティが生成されます.例:
出力結果:
4,スーパークラスはクラスの先頭の括弧に列挙されている.クラスはスーパークラスからすべての読み取り可能な属性を継承します.例:
出力結果:
5,クラス名は常にモジュールに存在し,クラスもモジュールの属性である.
6,Pythonはクラスに二重下線の命名方法(具体的な方法名、Pythonはすでに規定されている)を定義することによって演算子の再ロードを実現する.init__メソッドは構造関数を実現する.例:
出力結果:
2013-7-24 23:59学習ノート
1,Pythonの多くのOOP物語は式:objectに簡略化できる.attributeクラスが有効になっている場合、attributeが初めて現れた場所を見つけるために、PythonはまずObjectを検索し、次にそのオブジェクトの上のすべてのクラスをインストールし、下から上へ、左から右へ検索します.
2,クラスの関数を呼び出すと,常にクラスのインスタンスが隠されている.インスタンスにアタッチされたプロパティは、それらのインスタンスにのみ属しますが、クラスにアタッチされたプロパティはすべてのサブクラスとインスタンスで共有されます.
3 defと同様にclassも実行可能文であり、実行時に新しいクラスオブジェクトが生成され、classヘッダの変数名にコピーされます.class文内の最上位付与文(defではない)は、クラスのプロパティを作成し、すべてのインスタンスを共有します.メソッド内でselfプロパティに値を割り当てると、各インスタンス独自のプロパティが生成されます.例:
class FirstClass:
def setData(self, value):
self.data = value
def display(self):
print self.data
x = FirstClass()
y = FirstClass()
x.setData(3.14)
y.setData('hello world')
x.display()
y.display()
出力結果:
3.14
hello world
4,スーパークラスはクラスの先頭の括弧に列挙されている.クラスはスーパークラスからすべての読み取り可能な属性を継承します.例:
class FirstClass:
def setData(self, value):
self.data = value
def display(self):
print self.data
class SecondClass(FirstClass):
def display(self):
print 'secondClass: %s' %self.data
x = SecondClass()
x.setData('linlin')
x.display()
出力結果:
secondClass: linlin
5,クラス名は常にモジュールに存在し,クラスもモジュールの属性である.
6,Pythonはクラスに二重下線の命名方法(具体的な方法名、Pythonはすでに規定されている)を定義することによって演算子の再ロードを実現する.init__メソッドは構造関数を実現する.例:
class FirstClass:
def setData(self, value):
self.data = value
def display(self):
print self.data
class SecondClass(FirstClass):
def __init__(self, value):
self.data = value
def __add__(self, other):
return SecondClass(self.data + other)
def __mul__(self, other):
return SecondClass(self.data * other)
x = SecondClass('linlin')
x.display()
y = x + 'mo'
y.display()
z = x * 3
z.display()
出力結果:
linlin
linlinmo
linlinlinlinlinlin