>>> class C(str):... def __new__(cls, *args, **kw):... return str.__new__(cls, *args, **kw)... >>> c = C("hello world")>>> type(c)<class '__main__.C'>>>> c.__class__.__mro__(<class '__main__.C'>, <type 'str'>, <type 'basestring'>, <type 'object'>)由于
__init__是在构造对象之后调用的,因此修改不可变类型的值为时已晚。请注意,这
__new__是一个类方法,因此我已经调用了第一个参数
cls
看到这里了解更多信息
>>> class C(str):... def __new__(cls, value, meta):... obj = str.__new__(cls, value)... obj.meta = meta... return obj... >>> c = C("hello world", "meta")>>> c'hello world'>>> c.meta'meta'


