首页 > python 的特殊方法

python 的特殊方法

python中类似__init__()__str__()这样的特殊方法,其内在逻辑是怎样的?为什么要定义这样的特殊方法:
1、比如定义一个新类,如果不写__init__()是否意味着该类会隐式的调用基类的__init__(),或者说该类就无法进行实例化?
2、在新类中定义的特殊方法比如__init__()等,是否实质上就是对基类对应的特殊方法进行重写?
3、__str__()函数同str()函数有什么联系和区别?
4、下例print函数在有无__str__()下输出的结果完全不一样,那么print 函数和__str__()以及str()的关系是怎样的?

class intSet(object):

def __init__(self):
    self.vals = []

def __str__(self):
    self.vals.sort()
    return '{' + ','.join([str(e) for e in self.vals]) + '}'
    
def num(self):
    return len(self.vals)
    
def insert(self, e):
    if not e in self.vals:
        self.vals.append(e)

def member(self, e):
    """Assumes e is an integer
    return e in self.vals

def remove(self, e):
    try:
        self.vals.remove(e)
    except:
        raise ValueError(str(e) + ' not found')

`

如果不注释掉__str__()

>>> s
<__main__.intSet object at 0x000000000A7E3518>
>>> print s
{3,4,5}

如果注释掉__str__()
>>> print s
<__main__.intSet object at 0x000000000A7E35F8>


__str__() 用于将值转化为适于人阅读的形式

因为类本身是一个objectprint一个类时,默认是显示他是一个对象
如果在类中定义__str__(),他会去运行__str__()方法


【热门文章】
【热门文章】