python3 魔術方法匯總


 

 

 

一、__new__()

"""
解釋:
	此方法是用來生成類的實例的,它是類里面第一個執行的函數
	它至少要有一個參數 通常命名為cls,cls表示需要實例化的類,此參數在實例化時由Python解析器自動提供。
	new()方法是在類准備將自身實例化時調用。
	new()方法始終都是類的靜態方法,即使沒有被加上靜態方法裝飾器
	此函數不返回值或者失敗  則 init不會執行

作用:
	用在構造方法init()建造實例之前
	在Python 中存在於類里面的構造方法init()負責將類的實例化,而在init()調用之前,new()決定是否要使用該init()方法,因為new()可以調用其他類的構造方法或者直接返回別的對象來作為本類 的實例。
"""
class New():

	def __new__(cls, *args, **kv):
		print(args, kv)
		if not hasattr(cls, '_inst'):
			cls._inst = super(New, cls).__new__(cls)
		return cls._inst
		# return object.__new__(cls) 

a = New('new', jxk=12)

  

二、__init__()

"""
解釋:
	在創建一個對象時 默認自動調用

作用:
	始化函數,用來完成一些默認的設定
"""
class Init():

	def __init__(self, name):
		print(self, name)

a = Init('new')

  

三、__call__()

"""
解釋:
	在Python中,函數其實是一個對象:因為函數可以被調用,所以函數被稱為可調用對象
	一個類實例也可以變成一個可調用對象,只需要實現一個特殊方法__call__()。
作用:
	可以把實例對象用類似函數的形式表示,進一步模糊了函數和對象之間的概念
"""
class Call(object):

	def test(self):
		print(1)

	def __init__(self):
		print("我是構造函數! ")

	def __call__(self):
		print("當把本類實例化並作為函數調用時 自動調用本方法")

c = Call()
c() #調用

  

 四、__str__()

"""
解釋:
	當實例化的類對象 被str() 函數調用時 自動觸發此方法

作用:

"""
class Str_(object):
	def __str__(self):
		print('你調用了str 方法!')
		
		return '返回值必須為字符串'


s = Str_()
str( s )

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

參考資料: https://blog.csdn.net/Ka_Ka314/article/details/80402143


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM