我的问题很简单,我有:
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?
谢谢!