python中的常見魔術方法

2021-09-25 17:26:09 字數 3418 閱讀 9271

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...