>  기사  >  백엔드 개발  >  Python 특수 메소드 new에 대한 자세한 설명

Python 특수 메소드 new에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-03-04 17:24:571274검색

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中文网!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.