1. <dd id="jcnig"><nav id="jcnig"><delect id="jcnig"></delect></nav></dd>
      <dfn id="jcnig"><tt id="jcnig"><sup id="jcnig"></sup></tt></dfn>

    2. <cite id="jcnig"></cite>
      <cite id="jcnig"><tt id="jcnig"></tt></cite>

      <address id="jcnig"><nav id="jcnig"></nav></address>
    3. <address id="jcnig"><nav id="jcnig"></nav></address>
      400-650-7353

      精品課程

      您所在的位置:首頁 > IT干貨資料 > python > 【Python基礎知識】Python類的魔法方法和靜態方法

      【Python基礎知識】Python類的魔法方法和靜態方法

      • 發布: 優就業it培訓
      • 來源:優就業
      • 2021-06-18 18:17:07
      • 閱讀()
      • 分享
      • 手機端入口

      1、類中的魔法方法

      魔法方法是類或實例在特殊情況下自動執行的方法。魔法方法除了前文已經介紹過的__init__()構造方法外,還有__str__()打印方法和__del__()析構方法。

      (1)__str__()打印方法

      __str__()打印方法是打印描述實例信息的魔法方法,能夠打印指定的信息,并自動執行。其語法格式如下:

      class 類名(object):

      def __str__(self):

      方法體

      下面是一個使用__str__()打印方法的示例:

      1. >>> class Car(object): 
      2. ...     def __init__(self, brand, color): 
      3. ...         self.brand = brand 
      4. ...         self.color = color 
      5. ...         self.max_speed = 240 
      6. ...     def __str__(self): 
      7. ...         return '品牌是{},顏色是{},最大時速是{}。'.format(self.brand, self.color, self.max_speed) 
      8. ... 
      9. >>> falali = Car('法拉利''白色'
      10. >>> print(falali) 
      11. 品牌是法拉利,顏色是白色,最大時速是240。 

      上述程序中,Car類的__init__()構造方法接收小汽車的品牌和顏色參數賦值給實例屬性,并且初始化一個最高時速實例屬性;__str__()打印方法的功能是一個格式化字符串,描述了小汽車的屬性。使用Car類創建實例falali,并傳入兩個參數,使用print()函數打印實例,此時自動調用了Car類中的__str__()打印方法,打印字符串。

      (2)__del__()析構方法

      __del__()析構方法是在刪除實例時自動運行的魔法方法。其語法格式如下:

      class 類名(object):

      def __del__(self):

      方法體

      下面是一個使用__del__()析構方法的示例:

      1. >>> class Car(object): 
      2. ...     def __init__(self, brand, color): 
      3. ...         self.brand = brand 
      4. ...         self.color = color 
      5. ...         self.max_speed = 240 
      6. ...     def __del__(self): 
      7. ...         print('{}要報廢了,要去車管所注銷了'.format(self.brand)) 
      8. ... 
      9. >>> falali = Car('法拉利''白色'
      10. >>> print(id(falali)) 
      11. 43663600 
      12. >>> del falali 
      13. 法拉利要報廢了,要去車管所注銷了 
      14. >>> print(id(falali)) 
      15. Traceback (most recent call last): 
      16.   File "", line 1in  
      17. NameError: name 'falali' is not defined 

      上述程序中,Car類中定義了一個析構方法,其功能是打印一個格式化字符串。當使用Car類創建實例falali后,調用id()方法獲取falali實例的地址并打印;使用del falali刪除falali實例,此時自動調用了Car類中的__del__()析構方法,打印字符串;再次調用id()方法獲取falali實例的地址,Python解釋器提示出錯了,falali名稱沒有被定義,這是因為falali實例已經被刪除了。

      2、類中的靜態方法

      靜態方法是類中不對當前屬性和方法進行操作的方法。靜態方法的特點如下:

      ①靜態方法無隱含參數。

      ②無法通過self或cls調用屬性。

      ③使用@staticmethod裝飾。

      靜態方法的語法格式如下:

      @staticmethod

      def 方法名(參數):

      方法體

      調用靜態方法有兩種方式,一種是采用“類名.方法名(參數)”的形式;另一種是先實例化,再采用“實例名.方法名(參數)”的形式:

      1. >>> class Test(): 
      2. ...     @staticmethod 
      3. ...     def info(): 
      4. ...         print('成功進入靜態方法'
      5. ... 
      6. >>> Test.info()   # 第一種調用方式 
      7. 成功進入靜態方法 
      8. >>> s = Test() 
      9. >>> s.info()   # 第二種調用方式 
      10. 成功進入靜態方法 

      下面比較一下靜態方法與類方法的相同點和不同點。

      靜態方法與類方法的相同點如下:

      ①都可以在類內調用。

      ②都可以通過實例調用。

      靜態方法與類方法的不同點如下:

      ①靜態方法沒有默認參數,類方法第一個默認參數為cls。

      ②靜態方法內不能調用類屬性或實例屬性,類方法內只能調用類屬性和類方法。

      學習疑問申請解答
      您的姓名
      您的電話
      意向課程
       

      中公優就業

      IT小助手

      掃描上方二維碼添加好友,請備注:599,享學習福利。

      >>本文地址:
      注:本站稿件未經許可不得轉載,轉載請保留出處及源文件地址。

      推薦閱讀

      優就業:ujiuye

      關注中公優就業官方微信

      • 關注微信回復關鍵詞“大禮包”,享學習福利
      QQ交流群
      在線疑問解答
      (加群備注“網站”)
      IT培訓交流群 加入群聊 +
      軟件測試 加入群聊 +
      全鏈路UI/UE設計 加入群聊 +
      Python+人工智能 加入群聊 +
      互聯網營銷 加入群聊 +
      Java開發 加入群聊 +
      PHP開發 加入群聊 +
      VR/AR游戲開發 加入群聊 +
      大前端 加入群聊 +
      大數據 加入群聊 +
      Linux云計算 加入群聊 +
      優就業官方微信
      掃碼回復關鍵詞“大禮包”
      享學習福利

      測一測
      你適合學哪門IT技術?

      1 您的年齡

      2 您的學歷

      3 您更想做哪個方向的工作?

      獲取測試結果
       
      課程資料、活動優惠 領取通道
       
       
      日本一本二本三本av网站,一本加勒比HEZYO东京热高清,一本久久A久久精品综合