class RecTangle:
def __init__(self,length,width):
self.length=length
self.width=width
def getPerl(self):
return(self.length+self.width)
def getArea(self):
return(self.length*self.width)
rec =RecTangle(5,4)
print(rec.getArea())
print(rec.getPerl())
但是对象实例化真正第一个调用的魔法方法是: _ _ new _ _ (class[,….])
那么什么时候会需要重定义new呢?
class CapStr(str): #str是一个不可修改的父类
def __new__(cls,stringValue):
string=str(stringValue).upper() #new必须返回一个实例对象
return str.__new__(cls,string) #返回str构造后的实例对象 → 一个大写的字符串
a = CapStr('i love FishC')
print(a) # a此时是一个大写的字符串(实例对象)
那么构造以后,怎么析构我们的类呢?
class C:
def __init__(self):
print('init被调用了...')
def __del__(self):
print('del被调用了...')
c1=C()
c2=c1
c3=c2
del c1
print('=======\n')
del c3
print('============\n')
del c2