python中类似__init__()、__str__()这样的特殊方法,其内在逻辑是怎样的?为什么要定义这样的特殊方法:1、比如定义一个新类,如果不写__init__()是否意味着该类会隐式的调用基类的__init__(),或者说该类就无法进行实例化?2、在新类中定义的特殊方法比如__init__()等,是否实质上就是对基类对应的特殊方法进行重写?3、__str__()函数同str()函数有什么联系和区别?4、下例print函数在有无__str__()下输出的结果完全不一样,那么print函数和__str__()以及str()的关系是怎样的?classintSet(object):def__init__(self):self.vals=[]def__str__(self):self.vals.sort()return'{'+','.join([str(e)foreinself.vals])+'}'defnum(self):returnlen(self.vals)definsert(self,e):ifnoteinself.vals:self.vals.append(e)defmember(self,e):"""Assumeseisanintegerreturneinself.valsdefremove(self,e):try:self.vals.remove(e)except:raiseValueError(str(e)+'notfound')`如果不注释掉__str__()>>>s<__main__.intSetobjectat0x000000000A7E3518>>>>prints{3,4,5}如果注释掉__str__()>>>prints<__main__.intSetobjectat0x000000000A7E35F8>
Cats萌萌
POPMUISE
相关分类