でisinstance(OBJ、CLS)オブジェクトobjがCLSの派生クラスのインスタンスであるか否かを判断します
issubclass(サブ、スーパー)か否かをサブクラスがスーパークラスのサブクラスであると判断
__getattr__プロパティへのアクセスは__getattr__をトリガ、存在しません。
__getattribute__かかわらず、プロパティがあるかどうかの__getattribute__トリガされます
例デルF1がトリガ[ '名前']のように角括弧[]辞書方法によって__setitem__、__delitem__、__getitem__、
点を通る__setattr__、delattr__、__getattr__、例えばデルf1.nameようにトリガする方法
### __ str__、__repr__全ての制御出力、出力戻り値は文字列を返すことができ、文字列は、ノンリターンではありません
Fooクラス:
デフ__str __(自己):
リターンは#制御情報を印刷することができ、「1カスタマイズ」
F1 =はFoo()
印刷(F1)#基本的にSTR(F1)、f1は実際に呼び出さ.__ strの__()
>>>カスタム1
Fooクラス:
デフ__init __(自己、氏名、年齢)
self.name =名前
self.age =年齢
デフ__repr __(自己):
リターン%(self.name、self.age)#__repr__トリガインタプリタ "名は%sの年齢%sのです"
F1 =はFoo( 'エゴン'、19)#トリガ__repr__
印刷(F1)
>>>名前エゴン年齢19
何__str__は、その後__repr__を転送しない場合は__str__、__repr__印刷優先順位は、共存__str__を呼び出す#
###形式のカスタム書式の方法
#####
X = {0} {0} - {0} 'の文字列内の位置に対応するフォーマット( '犬')#デジタル表現形式。
プリント(X)
>>>犬:犬、犬
##### 2
クラス日:
デフ __init __(自己、年、月、日):
self.year =年
self.mon =私の
self.day =日
D1 =日(2016,9,27)
X = "{0.year} {0.mon} {0.day}" .format(D1)
Y = '{0.year}:{0.mon}:{0.day} .format(D1)
Z = {0.mon} - {0.day} - {0.year} .format(D1)
プリント(X)
プリント(Y)
プリント(Z)
>>>
20161226
2016:12:26
2016年12月26日
#####サプリメント
そうでない場合 0:
印刷("OK" )
>>> OK
ない場合は 1:
印刷("OK" )
>>>
##### 3
format_dic = {
'YMD': '{0.year} {0.mon} {0.day}'、
'MD-Y': '{0.mon} - {0.day} - {0.year}'、
'Y:M:D': '{0.year}:{0.mon}:{0.day}
}
クラス日:
デフ __init __(自己、年、月、日):
self.year =年
self.mon =私の
self.day =日
デフ __format __(自己、format_spec):
印刷(「私はそれを実行します」)
印刷('--->'、format_spec)
ない場合 format_spec:ときformat_spec不在でない場合は##これが決定します
= format_spec 「YMD」 #のformat_spec存在する場合ではない、ここで設定したデフォルト値
FM = format_dic [format_spec]
リターン fm.format(自己)
D1 =日(2016,12,26)
フォーマット(D1) #の呼び出しD1 .__ format__
プリント(フォーマット(D1))
>>>
私は#実行形式(D1)、それを実行します
--->
私はそれが#印刷を実行実行する(フォーマット(D1))
--->
20161226
キー値はformat_specが辞書にない追加#####第四に、または format_spec でない format_dic:
デフ __format __(自己、format_spec):
印刷(「私はそれを実行します」)
印刷('--->'、format_spec)
そうでない場合 format_spec か format_spec ではない format_dic:
format_spec = 'YMD'
FM = format_dic [format_spec]
リターン fm.format(自己)
D1 =日(2016,12,26)
プリント(フォーマット(D1、'Y:M:D' ))
印刷(フォーマット(D1、"ajkdla" ))
>>>
Iラ#が実行プリント(フォーマット(D1、実行'Y:M:Dを'))
---> Y:M:D
2016:12:26
私は#実行印刷(フォーマット(D1、実行する「ajkdla」キーが辞書の値ではない場合、))、すなわちformat_spec
---> ajkdla
20161226
######## __ slots__:メモリ使用量を節約するために、追加の制限はカスタマイズされた割り当てに__slots__良いキーで使用できる属性を定義し
__slots __:,,,,()
なぜ__slots__:__dict__あなたはクラスのいくつかの属性を持っている場合、辞書には、大量のメモリを占有しますが、多くの例がありますが、メモリを節約するために__slots__インスタンスを置き換えるために使用することができます
クラス Fooの:
__slots__ = [ '名前'、'時代' ]
デフ XYY(自己):
パス
F1 =はFoo()
f1.name = 'XYY'
f1.age = 18
### __プロパティを継承することはできませんdoc__内の例題は、自動割り当てなしを定義しません
クラス Fooの:
「私は学習にはまっ女の子よ」
パス
F1 =はFoo()
印刷(F1 .__ doc__内の例題)
>>>私は学習にはまっ女の子よ
### __ class__、__module__クラス名とモジュール名属性が属し表示
デルとの属性を削除しようとしたときに### __ del__は実行__del__をトリガー
__call__実行をトリガーするオブジェクトの背後にある### __ call__ブラケット、。
クラス Fooの:
デフ __call __(自己):
印刷(「私は実行して」)
F1 =はFoo()
F1() #のコールはFooの__call__
Foo() #の呼び出しがある***で__call__すべてが対象であるため、
###イテレータプロトコル:オブジェクトが__iter__がクラスに追加、反復法の対象となり、戻り値を呼び出す__next__
クラス Fooの:
デフ __init __(自己、N):
self.n = N
デフ __iter __(自己):
リターン自己
デフ __next __(自己):
もし self.n == 15:
昇給を呼び出すとStopIteration("N- 最大15" )
self.n + = 1
リターン self.n
F1 =フー(10)
プリント(F1 .__次に__()) #のF1()即ちターゲットブラケットとのFooクラスが有する__iterの__()と、反復子になる__next__戻り値を
プリント(次の(F1))
用 I で F1: #forサイクルはイテレータプロトコルすなわち以下OBJ = ITER(F1)を、F1 .__ ITER __()
印刷(I) #を呼び出すことに相当し(__ __next)
####変数の値の代入
= 2
B = 1
C、D = B、Cに割り当てられた#Bを、AがDに割り当てられています
プリント(C、D)
>>> 1 2
番号列の出力Feibonaci反復子###
クラス Fooの:
デフ __init __(自己、X = 0、Y = 1):
self.x = X
self.y = Y
デフ __iter __(自己):
リターン自己
デフ __next __(自己):
self.x、self.y = self.y、self.x + self.y
もし self.y> = 100:
昇給を呼び出すとStopIteration(「100 内の列のFeibonaci番号」)
リターン self.y
F1 =はFoo()
以下のための私で F1:
プリント(I)