日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python_魔術(shù)方法

系統(tǒng) 1779 0

魔術(shù)方法(魔法函數(shù)):一種特殊的方法。

特點:不需要人工調(diào)用,在特定的時刻自動執(zhí)行。

1._ init _ 初始化魔術(shù)方法 *****

            
              1.觸發(fā)時機:實例化對象之后觸發(fā)
2.作用:為實例化的對象添加對象的所屬成員。
3.參數(shù):一個self 接受當前對象  其他的參數(shù)根據(jù)實例化的傳參決定
4.返回值:無
5.注意事項:無
例:
class Name():
    age = 18
    def __init__(self,head):
        self.sex = "男"
        self.color = "black"
        self.runs = self.run
        print(head)
    def run(self):
        print("黑人跑的快")
name = Name("hair")   #制作一個對象,對象初始化
print(name.__dict__)
name.runs()

            
          

2._ new _ 構(gòu)造方法 *****

            
              1.觸發(fā)時機:實例化對象的時候觸發(fā)(在__init__之前)!
2.作用:管理控制對象的生成過程。
3.參數(shù):一個cls接受當前類,其他的參數(shù)根據(jù)實例化的參數(shù)決定
4.返回值:可有可無  沒有返回值,實例化結(jié)果為None
5.注意事項:new魔術(shù)方法跟init的魔術(shù)方法的參數(shù)一致(除了第一個)
生成對象用return object.__new__(cls)
例:
class YmPo(object):
    def __new__(cls,name):
        if name == "我":
            return object.__new__(cls)
        else:
            pass
hanguo = YmPo("你")  #先 生成對象,在初始化對象
print(hanguo)

            
          

單例設(shè)計模式:一個類無論實例化多少次,有且只有一個對象(使用__new__模式方法)
單例模式形成后,成員屬性不變,成員屬性的值改變
例:

            
              
                class
              
              
                Text
              
              
                (
              
              
                )
              
              
                :
              
              
                # 給成員屬性name賦值為None
              
              
    name 
              
                =
              
              
                None
              
              
                # 創(chuàng)建對象
              
              
                def
              
              
                __new__
              
              
                (
              
              cls
              
                ,
              
              name
              
                )
              
              
                :
              
              
                # 判斷name屬性是否是None
              
              
                if
              
               cls
              
                .
              
              name 
              
                ==
              
              
                None
              
              
                :
              
              
                # 通過父類object 中的__new__ 魔術(shù)方法創(chuàng)建對象,存儲在當前類的成員屬性name當中
              
              
            cls
              
                .
              
              name 
              
                =
              
              
                object
              
              
                .
              
              __new__
              
                (
              
              cls
              
                )
              
              
                #此處一定要用name接收返回值
              
              
                # 把該類對象進行返回
              
              
                return
              
               cls
              
                .
              
              name
    
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
              names
              
                )
              
              
                :
              
              
        self
              
                .
              
              mingzi 
              
                =
              
               names
obj1 
              
                =
              
               Text
              
                (
              
              
                "你好"
              
              
                )
              
              
obj2 
              
                =
              
               Text
              
                (
              
              
                "世界"
              
              
                )
              
              
                print
              
              
                (
              
              obj1
              
                .
              
              mingzi
              
                )
              
              
                print
              
              
                (
              
              obj2
              
                .
              
              mingzi
              
                )
              
            
          

3._ del _ 析構(gòu)方法 ****

            
              1.觸發(fā)時機:對象被系統(tǒng)回收的時候自動觸發(fā)[1.頁面執(zhí)行完畢回收所有變量 2.所有對象(引用)被del的時候]
2.作用:回收程序使用過程的信息和變量等
3.參數(shù):一個self接收當前對象
4.返回值:無
5.注意事項:無
例:
class Durk():
    def __del__(self):
        print("del被觸發(fā)了")
yazi = Durk()
name  = yazi
print("======================")
del yazi
print("***********************")
del name
print("------------------------")

            
          

4._ call _

            
              1.觸發(fā)時機:將對象當作函數(shù)調(diào)用的時候自動觸發(fā)
2.作用:常用于歸結(jié)類/對象的操作步驟,方便后期調(diào)用
3.參數(shù):一個self接受當前對象,其余的參數(shù)根據(jù)需求添加
4.返回值:可以有,可以沒有
5.注意事項:無
class Computer():
    name = "電腦"
    def end(self):
        print("工作結(jié)束了")
    def __call__(self,sex):
        print(sex)
        self.run()
        self.end()
        return "打完收工"
    def run(self):
        print("開始工作啦")
#實例化
huipu = Computer()
res = huipu("此電腦年齡為2年")
# print(res)

            
          

5._ len _

            
              1.觸發(fā)時機:使用len函數(shù)檢測對象的時候自動觸發(fā)
2.作用:使得len可以檢測對象中某個數(shù)據(jù)的信息
3.參數(shù):一個self接受當前對象
4.返回值:必須有,必須是整型(返回值就是檢測的值)
5.注意事項:len檢測什么由程序員自己決定
例:
class Tall():
    def __init__(self):
        self.name = "hello"
    def __len__(self):
        res = len(self.name)
        return res
#實例化類
gao = Tall()
res = len(gao)
print(res)

            
          

6._ str _

            
              1.觸發(fā)時機:使用print打印對象的時候自動觸發(fā),使用str()轉(zhuǎn)換對象的時候也會觸發(fā)
2.作用:可以定義打印對象顯示的信息內(nèi)容
3.參數(shù):一個self接受當前對象
4.返回值:必須有,且必須是字符串類型(即顯示的對象內(nèi)容)
5.注意事項:無
例:
class Tall():
    def __init__(self):
        self.name = "hello"
    def __str__(self):
        return "這是一個實例化Tall得到的對象"
#實例化類
gao = Tall()
print(gao)

            
          

7._ repr _

            
              1.觸發(fā)時機:在使用repr轉(zhuǎn)換對象的時候自動觸發(fā)
2.作用:可以設(shè)置repr函數(shù)操作對象的結(jié)果
3.參數(shù):一個self接受有當前對象本身
4.返回值:有必須是字符串
5.注意事項:正常情況下,類中的__str__和__repr__魔術(shù)方法是完全一樣的(字符串中的str和repr魔術(shù)方法就不一樣。)
repr():將對象轉(zhuǎn)化為供解釋器讀取的形式。
repr函數(shù)和str函數(shù)除了對字符串的處理,其他的是一致的.在類中定義魔術(shù)方法的時候想使用repr方法就得定義str魔術(shù)方法
例:
class Tall():
    def __init__(self):
        self.name = "hello"
    def __repr__(self):
        print("repr被觸發(fā)")
        return "這是一個實例化Tall得到的對象"
#實例化類
gao = Tall()
# res = repr(gao)
# print(res)

            
          

8._ bool _

            
              1.觸發(fā)時機:使用bool() 轉(zhuǎn)換對象的時候自動觸發(fā)(一般情況下,對象轉(zhuǎn)換的結(jié)果默認就是True)
2.作用: 用于控制檢測對象成員的信息
3.參數(shù):一個self接受當前對象
4.返回值:必須有且必須是布爾值
5.注意事項:無
class Tall():
    def __init__(self,age):
        self.name = "hello"
        self.age = age
    def __bool__(self):
        print("bool被觸發(fā)")
        if self.age == "0":
            return True
        else:
            return False
#實例化類
gao = Tall("0")
res = bool(gao)
print(res)

            
          

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 台南市| 上饶县| 红原县| 富平县| 九江县| 长垣县| 嘉义县| 天长市| 南充市| 遂溪县| 和林格尔县| 廊坊市| 杂多县| 湖北省| 肥城市| 顺平县| 贞丰县| 广汉市| 蓬安县| 常德市| 阿拉尔市| 沂源县| 张家界市| 上林县| 五指山市| 堆龙德庆县| 本溪市| 黑河市| 松原市| 都昌县| 鄂尔多斯市| 阳城县| 宣城市| 和龙市| 无为县| 宁陕县| 夏邑县| 遂昌县| 鹤峰县| 濉溪县| 巫溪县|