지금까지 배웠던 것부터, 파이썬에서 수퍼 클래스의 메타 클래스와 상속은 매우 유사한 목적을 제공하지만 슈퍼 클래스 상속은 더욱 강력합니다.파이썬에서 수퍼 클래스의 상속보다 메타 클래스를 선호하는 이유
왜 내가 슈퍼 클래스 상속보다 메타 클래스를 선호합니까? 어떤 경우에 메타 클래스가 도움이 될까요?
잘못된 가정이 있으면 죄송합니다. 나는 방금 메사추세츠를 배웠다.
지금까지 배웠던 것부터, 파이썬에서 수퍼 클래스의 메타 클래스와 상속은 매우 유사한 목적을 제공하지만 슈퍼 클래스 상속은 더욱 강력합니다.파이썬에서 수퍼 클래스의 상속보다 메타 클래스를 선호하는 이유
왜 내가 슈퍼 클래스 상속보다 메타 클래스를 선호합니까? 어떤 경우에 메타 클래스가 도움이 될까요?
잘못된 가정이 있으면 죄송합니다. 나는 방금 메사추세츠를 배웠다.
나는 당신이 오해했다고 생각합니다. 상속은 일반적으로 사용되는 내용을 기본 클래스에 넣고 그로부터 파생함으로써 코드를 재사용하는 고전적인 객체 지향 기술입니다.
간단히 말해서 메타 클래스를 사용하면 클래스 생성 프로세스 (특히 __new__
메소드)를 사용자 정의 할 수 있으므로 속성 및 이와 유사한 것을 동적으로 추가 할 수 있습니다. 조금 복잡하고 대부분의 경우이 필요가 없습니다. 이 대답에 대한 자세한 내용이 있습니다. What is a metaclass in Python?
왜 생성 프로세스를 사용자 정의하고 싶습니까? –
"메타 클래스를 사용하면 클래스 생성 프로세스를 사용자 정의 할 수 있습니다."- 생성 프로세스 이외의 많은 것을 사용자 정의 할 수 있습니다. [Color [ 'red']'가 작동하고 의미있는 것이있는 곳에서 'Color'클래스를 원하십니까?] (https://docs.python.org/3/library/enum.html) 메타 클래스를 사용하면 그렇게 할 수 있습니다. [당신이'thing'이 iterable 일 때만'isinstance (thing, Iterable)'이 참인 클래스'Iterable'을 원합니까?] (https://docs.python.org/3/library/collections.abc.html)) 메타 클래스로 그렇게 할 수 있습니다. – user2357112
아마도 미리 생성 된 클래스 집합 중 하나 (예 : 스레드 풀과 같은) 또는 ORM과 같은 (아마도 ORM과 같은) 하나만 반환하도록하려면 db 열에 대해 여러 속성이있는 클래스를 만듭니다 (예 : 날짜, 이름 등) 그리고 당신은 자동으로 "filter_by_date", "filter_by_name"등과 같은 메소드를 얻습니다. –
"메타 클래스와 파이썬에서 수퍼 클래스의 상속은 매우 비슷한 목적을합니다"- 뭐라구? 그 아이디어는 어디서 났니? 메타 클래스는 매우 다른 역할을합니다. – user2357112
적어도 그것은 메타 클래스를 배우는 사람처럼 저와 매우 흡사합니다. 차이점을 알 수 있습니까? –