一、__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