关于魔法方法的一点总结
生活随笔
收集整理的這篇文章主要介紹了
关于魔法方法的一点总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果按以下方式重寫魔法方法 _init_,結果會怎樣?
class Myclass:def __init__(self):return "I love you"會報錯,因為init 特殊方法不應當返回除了 None 以外的任何對象。
假設已經有鳥類的定義,現在我要定義企鵝類繼承于鳥類,但我們都知道企鵝是不會飛的,我們應該如何屏蔽父類(鳥類)中飛的方法?
用子類覆蓋掉父類的方法就行了
class Bird:def fly(self):print("fly away")class Penguin(Bird):def fly(self):pass寫一個 FileObject 類,給文件對象進行包裝,從而確認在刪除對象時文件能自動關閉
class FileObject:def __init__(self, filename):self.new_file = open(filename, 'r')def __del__(self):self.new_file.close()del self.new_file對文件進行包裝從而確定在刪除時文件可以自動關閉。
按照以下要求,定義一個類實現攝氏度到華氏度的轉換(轉換公式:華氏度 = 攝氏度*1.8+32)
希望可以盡可能簡化的形式輸出,有如下輸出格式
>>> print(C2F(32))89.6為了盡量簡練地實現功能,我們采取了“偷龍轉鳳”的小技巧。在類進行初始化之前,通過“掉包” tem 參數,讓實例對象直接返回計算后的結果。
class C2F(float):def __new__(cls, tem=0.0):return float.__new__(cls, tem*1.8+32)定義一個類繼承于 int 類型,并實現一個特殊功能:當傳入的參數是字符串的時候,返回該字符串中所有字符的 ASCII 碼的和(使用 ord() 獲得一個字符的 ASCII 碼值)。
class Nint(int):def __new__(cls, arg = 0):if isinstance(arg, str):total = 0for each in arg:total += ord(each)arg = totalreturn int.__new__(cls, arg)結果:
>>> print(Nint('A'))65總結
以上是生活随笔為你收集整理的关于魔法方法的一点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xgboost实现GPU加速
- 下一篇: 定义一个栈(Stack)类,用于模拟一种