这里我从str类的__new__()方法来说明。
str的__new__(cls,*args)必须传入一个参数cls,他是str的子类(注意不是实例)。
__new__()的返回值是该子类的实例,表现为字符串。
>>> class st(str): ... def __new__(cls,value,title): ... ins = str.__new__(cls,value) ... ins._title = title ... return ins ... def title(self): ... return self._title ... >>> s = st('hello','hi') >>> s 'hello' >>> str.__new__(st,'ok') 'ok' >>> a = str.__new__(st,'ok') >>> type(a) <class '__main__.st'> >>> a 'ok'
及时行乐