class a():
num = 0
def __init__(self,name):
a.num += 1
self.name = name
def __del__(self):
a.num -= 1
print(self.name,'被刪除,還剩下{}個物件'.format(a.num))
a = a('張三')
b = a('李四')
c = a('王五')
print(a.num)
# 最後三行呼叫可以省略,系統會自動呼叫__del__()方法的
del a
del b
del c
執行結果如下:
3
張三 被刪除,還剩下2個物件
李四 被刪除,還剩下1個物件
王五 被刪除,還剩下0個物件
class fib():
def __init__(self):
pass
def __call__(self,month):
lst =
a,b = 1,1
n = 1
while n <= month:
a,b= b,a+b
n+=1
return lst
f = fib()
print(f(9))
結果如下:
[1, 1, 2, 3, 5, 8, 13, 21, 34]
class per():
def __init__(self,name,age):
self.name = name
self.age = age
def __repr__(self):
return '我叫{},我的年齡是{}歲'.format(self.name,self.age)
def __str__(self):
return '哈哈哈,我是{},今年高壽{}'.format(self.name,self.age)
p = per('王五',75)
print(str(p))
print('我是:%s'%(p))
print('我是:%r'%(p))
print(repr(p))
執行結果如下:
哈哈哈,我是王五,今年高壽75
我是:哈哈哈,我是王五,今年高壽75
我是:我叫王五,我的年齡是75歲
我叫王五,我的年齡是75歲
class stu():
def __new__(cls,*args,**kwargs):#例項化的時候觸發
print('111111111111')
return object.__new__(cls)#用object類,去建立乙個此類的物件實體cls,代表的是本類.
def __init__(self,name,age):#初始化的時候觸發
print('哈哈哈哈哈哈')
self.age = age
self.name= name
zs = stu('張三',18)
輸出結果:
111111111111
哈哈哈哈哈哈
class dog():
def __init__(self,color,age):
self.color = color
self.age = age
def __str__(self):
return '顏色%s 年齡%d'%(self.color,self.age)
d = dog('紅色',18)
x = str(d)
print(x)
輸出結果:
顏色紅色 年齡18
a = [1,2,3]
b = [1,2,3]
print(a == b) #比較內容是否相等
print(a is b) #比較記憶體位址是否相同
print(id(a))
print(id(b))
輸出結果:
true
false
123404744
123404680
class stu():
def __init__(self,name,age):
self.name = name
self.age = age
def __eq__(self,other): #複寫了__eq__()方法
print('哈哈哈')
return self.__dict__ == other.__dict__
a = stu('張三',19)
b = stu('張三',19)
print(a==b)
輸出結果如下:
哈哈哈
true
class stu():
def __init__(self,name,age):
self.name = name
self.age = age
# def __eq__(self,other):
# print('哈哈哈')
# return self.__dict__ == other.__dict__
a = stu('張三',19)
b = stu('張三',19)
print(a==b)
輸出結果如下:
false
a = '1234567890'
b = '1234567890'
print(id(a))
print(id(b))
輸出結果如下:
120374256
120374256
class stu():
def __init__(self,name):
self.name = name
a = stu('張三')
b = stu('王五')
c = stu('李四')
print(id(a)/16)
print(hash(a))
輸出結果如下:
7701326.0
7701326
python中的魔術方法
單例模式 class car def new cls,args,kwargs if not hasattr car,inst 如果car裡沒有inst屬性 car.inst object.new cls 建立乙個car物件給inst return car.inst 返回inst的屬性 def ini...
Python中的魔術方法
魔術方法就是乙個類 物件中的方法,和普通方法唯一的不同時,普通方法需要呼叫!而魔術方法是在特定時刻自動觸發。這裡列舉出幾個常用的魔術方法 1.init 初始化魔術方法 觸發時機 初始化物件時觸發 不是例項化觸發,但是和例項化在乙個操作中 引數 至少有乙個self,接收物件 返回值 無 作用 初始化物...
Python中常見的特殊方法 魔術方法介紹
class vector2d typecode d def init self,x,y self.x float x 私有變數 self.y float y property def x self 讀取,v1.x相同方式讀取 return self.x property def y self ret...