2つの組み込み関数:
多くの組み込み関数があり、2つはここで説明されています。
- isinstance()継承を含むオブジェクトのタイプを判別します
- issubclass()は、クラス間の継承関係を決定します
class A:
pass
class B(A):
pass
b = B()
print(isinstance(b,B))
print(isinstance(b,A))
#两个都返回True
class A:pass
class B(A):pass
print(issubclass(B,A)) #返回True,B是A的子类
print(issubclass(A,B)) #返回False
___名前__:
それ
を呼び出すには4つの方法があります:それはクラスの特別なメソッド、
ダブルダウンメソッド、
マジックメソッド、
組み込みメソッドです
_ コール _ :
class A:
def __call__(self,*args,**kwargs):
print("执行call方法")
a = A()
a() #对象名() 相当于调用__call__方法
#或者
a = A()()
___len ___:
class Mylst:
def __init__(self):
self.lst = [1,2,3,4,5,6]
self.name = 'alex'
def __len__(self):
print("执行__len__了")
return len(self.lst)
l = Mylst()
print(len(l))
LEN(OBJ)このメソッドは、OBJの__len__を呼び出すことと等価である
_ LEN_メソッドの戻り値がlen関数の戻り値である
場合__len__方法ないOBJオブジェクトは、lenの関数エラー
___new ___:コンストラクタ
class Single:
def __new__(cls, *args, **kwargs):
obj = object.__new__(cls)
print("在new方法里",obj)
return obj
def __init__(self):
print("在init方法里",self)
s = Single()
1.オブジェクトに属するスペースを開く
2. オブジェクトのスペースをselfに渡し、initを実行する
3.このオブジェクトのスペースを呼び出し元に返す