object.__new__(cls[, …])

called to create a new instance of class cls. __new__() is a static method (special-cased so you need not declare it as such) that takes the class of which an instance was requested as its first argument. the remaining arguments are those passed to the object constructor expression (the call to the class). the return value of __new__() should be the new object instance (usually an instance of cls).

typical implementations create a new instance of the class by invoking the superclass’s __new__() method using super(currentclass, cls).__new__(cls[, …]) with appropriate arguments and then modifying the newly-created instance as necessary before returning it.

if __new__() returns an instance of cls, then the new instance’s __init__() method will be invoked like __init__(self[, …]), where self is the new instance and the remaining arguments are the same as were passed to __new__().

if __new__() does not return an instance of cls, then the new instance’s __init__() method will not be invoked.

__new__() is intended mainly to allow subclasses of immutable types (like int, str, or tuple) to customize instance creation. it is also commonly overridden in custom metaclasses in order to customize class creation.

调用产生一个新的类的实例,cls. __new__()是一个静态方法(不需要声明),类本身(cls)作为第一个参数,其他的的参数是传递给对象构造函数的表达式(对类的调用),__new()__的返回值应该是一个新的对象实例(一般是cls的实例)。典型的实现方法就是在返回新生成的实例之前,调用父类的__new()__方法(super(currentclass, cls).__new__(cls[, …]))来改变这个实例对象,比如说可以把实例里面字符的空格去掉等等(这句是我自己加的)。





class word(str):
def __new__(cls,word):
if ‘ ‘ in word:
print(“there is qutos”)
word = ”.join(word.split())
return str.__new__(cls,word)
a = word(‘hello sherry’)


Posted in 未分类