小甲魚Python視頻第041課(魔法方法:構造和析構 )課後題及參考解答
阿新 • • 發佈:2019-03-18
oat 構造 all 魔法 繼承 return shc 公式 none
# -*- coding: utf-8 -*- """ Created on Sun Mar 17 21:13:58 2019 @author: fengs """ """ 測試題: 0. 是哪個特征讓我們一眼就能認出這貨是魔法方法 以雙下劃線開始,以雙下劃線結束 1. 類實例化對象所調用的第一個方法是什麽? __new__ 2. 什麽時候我們需要在類中明確寫出 __init__ 方法? 重寫 __init__ 方法,修改構造方法的內容 3. 請問下邊代碼存在什麽問題? class Test: def __init__(self, x, y): return x + y 構造方法的返回值只能是None 4. 請問 __new__ 方法是負責什麽任務? 為實例對象申請內存 ------------> __new__ 方法主要任務時返回一個實例對象,通常是參數 cls 這個類的實例化對象,當然你也可以返回其他對象。 是的 __new__ 可以返回其他對象,牛p 5. __del__ 魔法方法什麽時候會被自動調用? del(object) """ """ 動動手 """ """ 0. 小李做事常常丟三落四的,寫代碼也一樣,常常打開了文件又忘記關閉。你能不能寫一個 FileObject 類,給文件對象進行包裝,從而確認在刪除對象時文件能自動關閉? """ class FileObject(): def __init__(self,file_full_path): self.file_object = open(file_full_path,‘r‘) def __del__(self): self.file_object.close() del self.file_object """ 1. 按照以下要求,定義一個類實現攝氏度到華氏度的轉換(轉換公式:華氏度 = 攝氏度*1.8+32) """ class C2F(float): def __new__(cls,arg=0.0): return float.__new__(cls,arg*1.8+32) #def __init__(self,c_value): # self.c_value = float(c_value) # self.f_value = self.c_value * 1.8 + 32 #???? print(C2F(32)) """ 2. 定義一個類繼承於 int 類型,並實現一個特殊功能:當傳入的參數是字符串的時候,返回該字符串中所有字符的 ASCII 碼的和(使用 ord() 獲得一個字符的 ASCII 碼值)。 實現如下: >>> print(Nint(123)) 123 >>> print(Nint(1.5)) 1 >>> print(Nint(‘A‘)) 65 >>> print(Nint(‘FishC‘)) 461 """ class Nint(int): def __new__(cls,arg = 0): if isinstance(arg,str): all = 0; for each in arg: all += ord(each) arg = all; return int.__new__(cls,arg) print(Nint(123)) print(Nint(1.5)) print(Nint(‘A‘)) print(Nint(‘FishC‘)) #def __init__(self,input_data): # self.input_data = input_data #???
小甲魚Python視頻第041課(魔法方法:構造和析構 )課後題及參考解答