object.__new__(cls[, ...])
cls 클래스의 새 인스턴스를 생성하기 위해 호출됩니다. __new__()는 인스턴스가 요청된 클래스를 첫 번째 인수로 사용하는 정적 메서드(특수 케이스이므로 선언할 필요 없음)입니다. 나머지 인수는 객체 생성자 표현식(클래스 호출)에 전달된 인수입니다. __new__()의 반환 값은 새 개체 인스턴스(일반적으로 cls의 인스턴스)여야 합니다.
일반적인 구현에서는 super(currentclass, cls를 사용하여 슈퍼클래스의 __new__() 메서드를 호출하여 클래스의 새 인스턴스를 만듭니다. ).__new__(cls[,...]) 적절한 인수를 사용하고 새로 생성된 인스턴스를 필요에 따라 수정한 후 반환합니다.
__new__()가 cls 인스턴스를 반환하는 경우 새 인스턴스의 __init__ () 메소드는 __init__(self[,...])와 같이 호출됩니다. 여기서 self는 새 인스턴스이고 나머지 인수는 __new__()에 전달된 것과 동일합니다.
__new__()가 cls 인스턴스를 반환하지 않으면 새 인스턴스의 __init__() 메서드가 호출되지 않습니다.
__new__()는 주로 불변 유형(예: int, str 또는 tuple)의 하위 클래스가 인스턴스를 맞춤설정할 수 있도록 하기 위한 것입니다. 창조. 또한 클래스 생성을 사용자 정의하기 위해 일반적으로 사용자 정의 메타클래스에서 재정의됩니다.
调用产生一个新的类的实例,cls. __new__()是一个静态방법(불유명),类本身(cls)작성자 특별한 사용),__new()__적인返回值应该是一个新的对象实例(一般是cls的实例). cls).__new__ (cls[,...])) 来改变这个实例对象, 比如说可以把实例里面字符적 空格去掉等等(这句是我自己加的)。
如果__new()_ _返回了一个cls의 유형, 然后就会调用这个새로운 유형의 __init()__방법(__init__[,...]), self指新创建的实例其余的参数 and 传递给__new( .来进行不可变类型(image是int,str,或者元组) 的子类自类义实例的创建。也可以重写自統义类来进行自組义类的创建。
举例:있다实例化对象之前,先将字符串做一个处理,就可以用__new__,下면적例子就是做一个去去处理。
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') print(a)다양한 Python 특별 방법之new详解상关文章请关注PHP中文网!