_call_ : 物件() 呼叫這個類中的__call__方法
class a:
def __call__(self, *args, **kwargs):
print('_________')
obj = a()
print(callable(obj))
obj()
a()() #obj = a() ==>obj()
__len__ : len(物件) 需要實現這個,類中加__len__方法
class cls:
def __init__(self,name):
self.name = name
self.students =
def len(self):
return len(self.students)
def __len__(self):
return len(self.students)
py22 = cls('py22期')
print(py22.len())
print(len(py22))
---------------------
class pow:
def __init__(self,n):
self.n = n
def __pow2__(self):
return self.n ** 2
def pow2(obj):
return obj.__pow2__()
obj = pow(10)
print(pow2(obj))
例項化的時候
先建立一塊物件的空間,有乙個指標能指向類 -->new
呼叫init -->init
class a:
def __new__(cls, *args, **kwargs):
o = object.__new__(cls)
print('執行new',o)
return o
def __init__(self):
print('執行init',self)
a()
# 執行new <__main__.a object at 0x00000000022802c8>
# 執行init <__main__.a object at 0x00000000022802c8>
設計模式 --單例模式
# 乙個類 從頭到尾 只會建立一次self的空間
class baby:
__instance = none #標識
def __new__(cls, *args, **kwargs):
if cls.__instance is none:
cls.__instance = super().__new__(cls)
return cls.__instance
def __init__(self,cloth,pants):
self.cloth = cloth
self.pants = pants
b1 = baby('紅毛衣','綠皮褲')
print(b1.cloth) #紅毛衣
b2 = baby('白襯衫','黑豹紋')
print(b1.cloth) #白襯衫
print(b2.cloth) #白襯衫
_str_:幫助我們在列印\展示物件的時候更直觀的顯示物件內容 %s str() print()
_repr_:repr是str的備胎,同時還和%r和repr有合作關係
class clas:
def __init__(self):
self.student =
def __str__(self):
return str(self.student)
#py22 = clas()
print(py22)
print(str(py22))
print('我們py22班 %s'%py22)
print(py22)
print(py22)
# ['大壯']
# ['大壯']
# 我們py22班 ['大壯']
# ['大壯']
# ['大壯', '大壯']
# 在列印乙個物件的時候 呼叫__str__方法
# 在%s拼接乙個物件的時候 呼叫__str__方法
# 在str乙個物件的時候 呼叫__str__方法
class clas:
def __init__(self):
self.student =
def __repr__(self):
return str(self.student)
def __str__(self):
return 'aaa'
py22 = clas()
print(py22)
print(str(py22))
print('我們py22班 %s'%py22)
print('我們py22班 %r'%py22)
print(repr(py22))
# aaa
# aaa
# 我們py22班 aaa
# 我們py22班 ['大壯']
# ['大壯']
# 當我們列印乙個物件 用%s進行字串拼接 或者str(物件)總是呼叫這個物件的__str__方法
# 如果找不到__str__,就呼叫__repr__方法
# __repr__不僅是__str__的替代品,還有自己的功能
# 用%r進行字串拼接 或者用repr(物件)的時候總是呼叫這個物件的__repr__方法
JS的一些內建方法
一 內建函式math 1.math 1 math.abs 求絕對值 2 math.pi 圓周率 2.求近似值 1 math.round 四捨五入 負數 0.5 進一 0.5 捨去 2 math.ceil 向上取整 3 math.floor 向下取整 3.求最值 1 math.max 求最大值 2 m...
JS的一些內建方法
一 內建函式math 1.math 1 math.abs 求絕對值 2 math.pi 圓周率 2.求近似值 1 math.round 四捨五入 負數 0.5 進一 0.5 捨去 2 math.ceil 向上取整 3 math.floor 向下取整 3.求最值 1 math.max 求最大值 2 m...
陣列內建的一些處理方法
在js中個,陣列是乙個array物件,有它自己內建的方法,今天來說一部分,可以去除迴圈,來實現對陣列的遍歷並且進行一定的操作 1.foreach 陣列遍歷方法,用在陣列的遍歷上,引數是乙個 函式,函式會傳入陣列的每乙個數值,如果陣列索引被修改了,那麼遍歷會繼續沿著索引向下。例如 1 var arra...