如果按以下方式重写魔法方法 _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 = 0
for each in arg:
total += ord(each)
arg = total
return int.__new__(cls, arg)
结果:
>>> print(Nint('A'))
65