博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

python学习之__new__()

Posted on 2017-11-21 16:00  开飞机的贝塔  阅读(230)  评论(0编辑  收藏  举报

这里我从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'