Python 매직 메소드 - 속성 변환 및 클래스 표현에 대한 자세한 설명
형변환 마법
형 변환 마법은 실제로 str 및 int와 같은 팩토리 함수를 구현한 결과입니다. 일반적으로 이러한 함수에는 몇 가지 관련 마법 메서드도 있습니다.
•__int__(자신)
•int 함수에 해당하는 정수형으로 변환합니다.
•__long__(자기)
•long 함수에 대응하는 long 정수형으로 변환합니다.
•__float__(자신)
•float 함수에 해당하는 부동 소수점 유형으로 변환합니다.
•__복잡한__(자기)
•복소수 함수에 해당하는 복소수형으로 변환합니다.
•__oct__(본인)
•oct 함수에 해당하는 8진수로 변환합니다.
•__hex__(자신)
•16진수 함수에 해당하는 16진수로 변환합니다.
•__index__(자기)
•먼저, 이 메소드는 int 또는 long일 수 있는 정수를 반환해야 합니다. 이 메서드는 두 가지 위치에서 유효합니다. 첫째, 연산자 모듈의 인덱스 함수에서 얻은 값은 이 메서드의 반환 값입니다. 둘째, 다음 코드 데모는 구체적으로 수행됩니다.
•__trunc__(자기)
• math.trunc(self)가 사용될 때 호출됩니다. __trunc__는 self 유형의 정수 잘림을 반환합니다(일반적으로 긴 정수).
•__coerce__(자신, 타인)
• 유형 강제를 구현했습니다. 이 메서드는 coerce 내장 함수의 결과에 해당합니다(이 함수는 Python 3.0부터 제거되었으므로 이 마법 메서드가 의미가 없음을 의미합니다. 후속 버전에서 다시 지원 여부에 대해서는 공식 홈페이지에 따라 다릅니다. )•이 함수의 기능은 서로 다른 두 숫자 유형을 동일한 유형으로 강제 변환하는 것입니다. 예:
이 매직 메소드를 정의할 때 변환을 완료할 수 없으면 None을 반환해야 합니다.
여기에는 Python이 1 1.0과 같은 작업을 수행할 때 먼저 강제 함수를 호출하여 동일한 유형으로 변환한 다음 실행합니다. 왜냐하면 1 1.0 = 2.0이기 때문입니다. 변환 후 실제 연산은 1.0 1.0 입니다. 그런 결과를 얻는 것은 놀라운 일이 아닙니다.
코드 예:
class Foo(object): def __init__(self, x): self.x = x def __int__(self): return int(self.x) + 1 def __long__(self): return long(self.x) + 1 a = Foo(123) print int(a) print long(a) print type(int(a)) print type(long(a))
int 유형을 반환해야 합니다. , 목록( list) 등을 사용하면 오류가 보고됩니다.
def __int__(self): return str(self.x)
def __int__(self): return list(self.x)
class Foo(object): def __init__(self, x): self.x = x def __int__(self): return long(self.x) + 1 def __long__(self): return int(self.x) + 1 a = Foo(123) print int(a) print long(a) print type(int(a)) print type(long(a))
__index__(자신):
우선 Operator.index()에 해당하고, Operator.index(a)는 a.__index__()와 같습니다.
import operator class Foo(object): def __init__(self, x): self.x = x def __index__(self): return self.x + 1 a = Foo(10) print operator.index(a)
class Foo(object): def __init__(self, x): self.x = x def __index__(self): return 3 a = Foo('scolia') b = [1, 2, 3, 4, 5] print b[a] print b[3]
class Foo(object): def __init__(self, x): self.x = x def __index__(self): return int(self.x) a = Foo('1') b = Foo('3') c = [1, 2, 3, 4, 5] print c[a:b]
a = Foo('1') b = Foo('3') c = slice(a, b) print c d = [1, 2, 3, 4, 5] print d[c]
__coerce__(자신, 타인):
코드 예:
class Foo(object): def __init__(self, x): self.x = x def __coerce__(self, other): return self.x, str(other.x) class Boo(object): def __init__(self, x): self.x = x def __coerce__(self, other): return self.x, int(other.x) a = Foo('123') b = Boo(123) print coerce(a, b) print coerce(b, a)
요약: 첫 번째 매개변수를 호출하는 매직 메소드입니다.
클래스의 표현은 실제로 외부 특성입니다. 예를 들어 print 문을 사용할 때 실제로 인쇄되는 내용은 해당 함수의 출력입니다.
•__str__(self)
• 클래스 인스턴스에서 str()이 호출될 때 발생하는 동작을 정의합니다. print는 기본적으로 str() 함수를 호출하기 때문입니다.
•__repr__(자신)
• 클래스 인스턴스에서 repr()이 호출될 때 발생하는 동작을 정의합니다. str()과 repr()의 주요 차이점은 대상 그룹입니다. repr()은 기계가 읽을 수 있는 출력을 반환하고, str()은 사람이 읽을 수 있는 출력을 반환합니다. Repr() 함수는 교환 모드에서 기본적으로 호출됩니다
•기능.
•__유니코드__(자체)
• 클래스 인스턴스에서 unicode()가 호출될 때 발생하는 동작을 정의합니다. unicode()는 str()과 매우 유사하지만 유니코드 문자열을 반환합니다. 클래스에서 str()이 호출되었지만 __unicode__()만 정의하면
•일. 호출 시 올바른 값이 반환되도록 __str__()을 정의해야 합니다. 모든 사람이 유니코드()를 사용하려는 기분은 아닙니다.
•__format__(self, formatstr)
• 새로운 형식 문자열 메서드를 사용하여 형식을 지정하기 위해 클래스의 인스턴스를 사용할 때 발생하는 동작을 정의합니다. 예를 들어, "Hello, {0:abc}!".format(a)는 a.__format__("abc")가 호출되도록 합니다. 이는 자신만의 숫자 또는 문자열 유형을 정의하는 데 유용합니다
• 매우 의미가 있습니다. 특별한 서식 옵션을 제공할 수 있습니다.
•__hash__(자신)
• 클래스 인스턴스에서 hash()가 호출될 때 발생하는 동작을 정의합니다. 사전에서 빠른 비교를 위해서는 정수를 반환해야 합니다.
•__hash__를 구현할 때 일반적으로 __eq__도 구현한다는 점에 유의하세요. 다음 규칙이 있습니다: a == b 는 hash(a) == hash(b) 를 의미합니다. 즉, 두 매직 메소드의 반환 값이 일관되어야 합니다.
•여기서 '해시 가능한 객체'의 개념을 소개합니다. 먼저, 해시 가능한 객체의 해시 값은 수명 주기 동안 변경되지 않아야 하며, 해시 값을 얻는다는 것은 __hash__ 메서드를 구현하는 것을 의미합니다. 해시 객체는 비교 가능합니다. 즉, __eq__ 또는
구현을 의미합니다.•__cmp__ 메소드와 해시 객체가 동일할 경우 해당 해시 값이 동일해야 함을 의미합니다. 이 기능을 구현하려면 __eq__의 반환 값이 __hash__와 동일해야 합니다.
•해시 가능한 객체는 사전 키 및 컬렉션 멤버로 사용될 수 있습니다. 이러한 데이터 구조는 내부적으로 해시 값을 사용하기 때문입니다. Python에 내장된 모든 불변 개체(예: 튜플, 문자열, 숫자 등)는 해시 가능하지만 목록과 같은 변경 가능 개체는 해시할 수 없습니다.
• 사전 등.• 사용자 정의 클래스의 인스턴스는 기본적으로 해시 가능하며 해시 값이 id 함수에서 나오므로 자신 이외의 누구와도 동일하지 않습니다. 그러나 이것이 hash(a) == id(a)를 의미하는 것은 아닙니다. 이 기능에 주의하시기 바랍니다.
•__nonzero__(자기)
• 클래스 인스턴스에서 bool()이 호출될 때 발생하는 동작을 정의합니다. 이 메서드는 반환하려는 값에 따라 True 또는 False를 반환해야 합니다. (python3.x에서는 __bool__로 변경됨)
•__dir__(자신)
• 클래스 인스턴스에서 dir()이 호출될 때 발생하는 동작을 정의합니다. 이 메서드는 사용자에게 속성 목록을 반환해야 합니다.
•__sizeof__(자체)
• 클래스 인스턴스에서 sys.getsizeof()가 호출될 때 발생하는 동작을 정의합니다. 이 메소드는 객체의 크기를 바이트 단위로 반환해야 합니다. 이는 일반적으로 C 확장으로 구현된 Python 클래스에 더 적합하며, 이는 이러한 확장을 이해하는 데 도움이 될 수 있습니다.여기서 특별히 이해하기 어려운 부분은 없으므로 코드 예시는 생략합니다.
위의 Python 매직 메소드 - 속성 변환 및 클래스 표현에 대한 자세한 설명은 모두 편집자가 공유한 내용이므로 참고가 되기를 바라며, Script Home을 지원해 주시길 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PS "로드"문제는 자원 액세스 또는 처리 문제로 인한 것입니다. 하드 디스크 판독 속도는 느리거나 나쁘다 : CrystalDiskinfo를 사용하여 하드 디스크 건강을 확인하고 문제가있는 하드 디스크를 교체하십시오. 불충분 한 메모리 : 고해상도 이미지 및 복잡한 레이어 처리에 대한 PS의 요구를 충족시키기 위해 메모리 업그레이드 메모리. 그래픽 카드 드라이버는 구식 또는 손상됩니다. 운전자를 업데이트하여 PS와 그래픽 카드 간의 통신을 최적화하십시오. 파일 경로는 너무 길거나 파일 이름에는 특수 문자가 있습니다. 짧은 경로를 사용하고 특수 문자를 피하십시오. PS 자체 문제 : PS 설치 프로그램을 다시 설치하거나 수리하십시오.

부팅 할 때 "로드"에 PS가 붙어있는 여러 가지 이유로 인해 발생할 수 있습니다. 손상되거나 충돌하는 플러그인을 비활성화합니다. 손상된 구성 파일을 삭제하거나 바꾸십시오. 불충분 한 메모리를 피하기 위해 불필요한 프로그램을 닫거나 메모리를 업그레이드하십시오. 하드 드라이브 독서 속도를 높이기 위해 솔리드 스테이트 드라이브로 업그레이드하십시오. 손상된 시스템 파일 또는 설치 패키지 문제를 복구하기 위해 PS를 다시 설치합니다. 시작 오류 로그 분석의 시작 과정에서 오류 정보를 봅니다.

느린 Photoshop 스타트 업 문제를 해결하려면 다음을 포함한 다중 프론트 접근 방식이 필요합니다. 하드웨어 업그레이드 (메모리, 솔리드 스테이트 드라이브, CPU); 구식 또는 양립 할 수없는 플러그인 제거; 정기적으로 시스템 쓰레기 및 과도한 배경 프로그램 청소; 주의를 기울여 관련없는 프로그램 폐쇄; 시작하는 동안 많은 파일을 열지 않도록합니다.

"로드"는 PS에서 파일을 열 때 말더듬이 발생합니다. 그 이유에는 너무 크거나 손상된 파일, 메모리 불충분, 하드 디스크 속도가 느리게, 그래픽 카드 드라이버 문제, PS 버전 또는 플러그인 충돌이 포함될 수 있습니다. 솔루션은 다음과 같습니다. 파일 크기 및 무결성 확인, 메모리 증가, 하드 디스크 업그레이드, 그래픽 카드 드라이버 업데이트, 의심스러운 플러그인 제거 또는 비활성화 및 PS를 다시 설치하십시오. 이 문제는 PS 성능 설정을 점차적으로 확인하고 잘 활용하고 우수한 파일 관리 습관을 개발함으로써 효과적으로 해결할 수 있습니다.

PS 카드가 "로드"되어 있습니까? 솔루션에는 컴퓨터 구성 (메모리, 하드 디스크, 프로세서) 확인, 하드 디스크 조각 청소, 그래픽 카드 드라이버 업데이트, PS 설정 조정, PS 재설치 및 우수한 프로그래밍 습관 개발이 포함됩니다.

깃털 통제의 열쇠는 점진적인 성격을 이해하는 것입니다. PS 자체는 그라디언트 곡선을 직접 제어하는 옵션을 제공하지 않지만 여러 깃털, 일치하는 마스크 및 미세 선택으로 반경 및 구배 소프트를 유연하게 조정하여 자연스럽게 전이 효과를 달성 할 수 있습니다.

이 기사는 MySQL 데이터베이스의 작동을 소개합니다. 먼저 MySQLworkBench 또는 명령 줄 클라이언트와 같은 MySQL 클라이언트를 설치해야합니다. 1. MySQL-Uroot-P 명령을 사용하여 서버에 연결하고 루트 계정 암호로 로그인하십시오. 2. CreateABase를 사용하여 데이터베이스를 작성하고 데이터베이스를 선택하십시오. 3. CreateTable을 사용하여 테이블을 만들고 필드 및 데이터 유형을 정의하십시오. 4. InsertInto를 사용하여 데이터를 삽입하고 데이터를 쿼리하고 업데이트를 통해 데이터를 업데이트하고 DELETE를 통해 데이터를 삭제하십시오. 이러한 단계를 마스터하고 일반적인 문제를 처리하는 법을 배우고 데이터베이스 성능을 최적화하면 MySQL을 효율적으로 사용할 수 있습니다.

PS 카드의로드 인터페이스는 소프트웨어 자체 (파일 손상 또는 플러그인 충돌), 시스템 환경 (DIFE 드라이버 또는 시스템 파일 손상) 또는 하드웨어 (하드 디스크 손상 또는 메모리 스틱 고장)로 인해 발생할 수 있습니다. 먼저 컴퓨터 자원이 충분한 지 확인하고 배경 프로그램을 닫고 메모리 및 CPU 리소스를 릴리스하십시오. PS 설치를 수정하거나 플러그인의 호환성 문제를 확인하십시오. PS 버전을 업데이트하거나 폴백합니다. 그래픽 카드 드라이버를 확인하고 업데이트하고 시스템 파일 확인을 실행하십시오. 위의 문제를 해결하면 하드 디스크 감지 및 메모리 테스트를 시도 할 수 있습니다.
