高度なオブジェクト指向(2)

_ _ スロット_ _ マジック

我々はこのことについて話している私は、あなたが実現しているかどうかわからない、Pythonはある動的言語動的言語は、私たちがランニング中のオブジェクトにバインドする新しいプロパティやメソッドを許可する一般的に、当然のことながら、プロパティとメソッドがバインドされているバインド解除することができます。しかし、我々は、オブジェクトのカスタム型を定義する必要がある場合にのみ、特定の属性をバインドすることができ、クラスによって定義することができます_ _ スロット_ _ 変数を定義します。なお_ _ スロット_ _ のみ効果へのオブジェクトの現在のクラスに制限され、サブクラスがどんな役割を果たしていません。

 

静的メソッドとクラスメソッド

@classmethod:クラス自体(CLS)は属性を取得し、変更することができます。
クラスメソッドの修飾子は、対応する機能なし自己パラメータをインスタンス化する必要はありませんが、最初のパラメータは、それ自体がクラスを呼び出すことができるCLSに必要なパラメータであり、属性クラス、クラスメソッド、およびその他のオブジェクトインスタンス化

                                                                    

 

 

サブクラスは親クラスを継承した後、既存の親クラスの実現の新しいバージョンを与えることができ、このアクションが呼び出されるメソッドのオーバーライド(上書き)。メソッドを書き換えることにより、我々は、親クラスの同じ動作は、我々はこのサブクラスが書き換えられたパスを呼び出すときに、達成するために、サブクラスで異なるバージョンを持っている、オブジェクトの異なるサブクラスは異なる挙動を示すことができます、これは、ポリモーフィズム(多型)。

例1: 

入力3つの数字(プライベート)、および見つける3つの数字は、
変更しようとしたところ二人の人物
"" "
クラスNumber(オブジェクト):
DEF __init __(自己、NUM1、NUM2、NUM3):
self._num1 = num1を
セルフ.__からnum2 NUM2 =
自己NUM3 .__ = NUM3

@Property
DEF NUM1(セルフ):
印刷(self._num1)

num1.setter @
DEF(セルフ、NUM):
self._num1 NUMを=

DEF SUM(セルフ):
印刷(自己self._num1 + .__からnum2 +自己.__ NUM3)


番号=番号(1,2,3)
#number.num1 = 10000
number.num1 = 1000
number.SUM()

例2:

                                                                                

 

                                                                       

                                             

列表生成式 :
a=(x for x in range(100) if x %2 == 0
print(a)
优点:计算速度快,以为一次性已经全部加载到内存中了,适合数据量不是太大的情况
缺点:占用内存
生成器 genter = (
a=(x for x in range(100) if x %2 == 0
优点:节约内存空间
缺点:计算速度慢,因为要生成

おすすめ

転載: www.cnblogs.com/yzm1020/p/11323267.html