小编Anl*_*ler的帖子

使用__new __()在Python中创建不可变类型

我的问题很简单,我有:

class upperstr(str):
    def __new__(cls, arg):
        return str.__new__(cls, str(arg).upper())
Run Code Online (Sandbox Code Playgroud)

为什么,如果我的__new__()方法是直接使用inmutable类型(str)的实例,我的新类型(upperstr)的实例是可变的?

>>> s = str("text")
>>> "__dict__" in dir(s)
False
>>> s = upperstr("text")
>>> "__dict__" in dir(s)
True
Run Code Online (Sandbox Code Playgroud)

如果我只重写__new __()方法,解释器在什么阶段将__dict__属性设置为upperstr intances?

谢谢!

python datamodel

1
推荐指数
1
解决办法
212
查看次数

标签 统计

datamodel ×1

python ×1