欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python_魔術方法

系統 1610 0

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

特點:不需要人工調用,在特定的時刻自動執行。

1._ init _ 初始化魔術方法 *****

            
              1.觸發時機:實例化對象之后觸發
2.作用:為實例化的對象添加對象的所屬成員。
3.參數:一個self 接受當前對象  其他的參數根據實例化的傳參決定
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 _ 構造方法 *****

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

            
          

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

            
              
                class
              
              
                Text
              
              
                (
              
              
                )
              
              
                :
              
              
                # 給成員屬性name賦值為None
              
              
    name 
              
                =
              
              
                None
              
              
                # 創建對象
              
              
                def
              
              
                __new__
              
              
                (
              
              cls
              
                ,
              
              name
              
                )
              
              
                :
              
              
                # 判斷name屬性是否是None
              
              
                if
              
               cls
              
                .
              
              name 
              
                ==
              
              
                None
              
              
                :
              
              
                # 通過父類object 中的__new__ 魔術方法創建對象,存儲在當前類的成員屬性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 _ 析構方法 ****

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

            
          

4._ call _

            
              1.觸發時機:將對象當作函數調用的時候自動觸發
2.作用:常用于歸結類/對象的操作步驟,方便后期調用
3.參數:一個self接受當前對象,其余的參數根據需求添加
4.返回值:可以有,可以沒有
5.注意事項:無
class Computer():
    name = "電腦"
    def end(self):
        print("工作結束了")
    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.觸發時機:使用len函數檢測對象的時候自動觸發
2.作用:使得len可以檢測對象中某個數據的信息
3.參數:一個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.觸發時機:使用print打印對象的時候自動觸發,使用str()轉換對象的時候也會觸發
2.作用:可以定義打印對象顯示的信息內容
3.參數:一個self接受當前對象
4.返回值:必須有,且必須是字符串類型(即顯示的對象內容)
5.注意事項:無
例:
class Tall():
    def __init__(self):
        self.name = "hello"
    def __str__(self):
        return "這是一個實例化Tall得到的對象"
#實例化類
gao = Tall()
print(gao)

            
          

7._ repr _

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

            
          

8._ bool _

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

            
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产1区2区 | 国产亚洲精品精品国产亚洲综合 | 亚婷婷洲AV久久蜜臀无码 | 成人性大片免费观看网站 | 天天久久综合网站 | 羞羞答答www网站进入 | 5252sese| 亚洲精品美女视频 | 精品国产AV色一区二区深夜久久 | 一级尻逼视频 | 99riav9.vip| 中文字幕日韩在线 | 一级女性大黄生活片免费 | 天天艹天天 | 国产精品视频播放 | 亚洲精品乱码久久久久久蜜桃91 | 成人欧美一区二区三区视频xxx | 成人亚洲A片V一区二区三区婷婷 | 日本激情在线视频 | 久久国产精品99久久久久久牛牛 | 毛片a级| 欧美专区在线播放 | 999国产一区二区三区四区 | 一级福利 | 国产精品久久久久久婷婷天堂 | 91网站在线看 | 国产一级毛片高清视频完整版 | 青草视频网址 | 久久久久毛片免费观看 | 久久久久亚洲精品中文字幕 | 九一免费版在线观看 | 国产欧美日韩亚洲精品区2345 | abc欧美成人影院 | 午夜成人在线视频 | 大色综合 | 一区二区三区回区在观看免费视频 | www.久| 操一操 | 成年视频免费观看 | 亚洲一区二区三区在线播放 | 日韩中文在线 |