2017-12-18 17 views
0

10 개 이상의 클래스를 상속받은 클래스를 만드는 파이썬적인 방법입니까? 아니면 다른 접근 방식을 고려해야합니까?파이썬 상속 - 다중 수퍼 클래스

+0

다중 상속은 일반적으로 피해야합니다. 10 과도한 소리. 포함 (즉,이 10 개의 클래스 중 일부에 인스턴스화 된 멤버)을 고려하십시오. –

답변

5

허용되는 경우, 상속하는 대신 다른 개체를 구성원으로 갖는 개체 인 복합 개체를 만드는 것도 고려해 볼 수 있습니다. 구성의 개념

위키 : composition

다중 상속 파이썬 : multiple inheritance

이 당신이 이해 한 다음 프로그램의 맥락에서 당신을 위해 더 나은 무엇인지 결정해야합니다.

1

다중 상속은 Python에서는 유효하지만 자주 사용되지는 않습니다. 내가 본 대표적인 유스 케이스의 대부분은 mixins (작은 조각이 주요 계층 구조 트리에 혼합되어 있음)입니다.

부모가 10 인 클래스를 만드는 것은 모든 OOP 언어에서 좋지 않으며 냄새가 아닙니다. 수업을 다른 종류의 추상화로 리팩터링해야합니다.

2

예, 완벽하게 합법적 인 여러 클래스를 상속합니다. 그러나 10 개의 수퍼 클래스가있는 경우 상속 트리를 조정해야 할 수도 있습니다. 아마도 일부 클래스는 중간 클래스에 의해 상속 될 수 있으므로 최종 클래스는 더 적은 클래스에서 상속됩니다.

당신이하려는 일에 더 깔끔한 해결책을 제공 할 수있는 구성에 대해서도 알아야합니다.

0

파이썬에서 여러 클래스 (10 개 이상)에서 상속하는 것이 괜찮습니까?

"괜찮습니다"라는 점에서 파이썬이이를 받아 들일 것이고 깨지거나 충돌하지 않을 것입니다.

클래스를 만드는 파이썬적인 방법입니까 아니면 다른 접근 방식을 고려해야합니까?

클래스를 만드는 것은 "파이썬적인"방법이 아닙니다. 많은 부모 클래스를 가짐으로써 부모 클래스가 몇 개인 경우의 잘 알려진 문제점을 악화시킬뿐만 아니라 클래스를 다른 많은 클래스에 직접 종속되게하고 클래스의 각 동작이 어디서 발생하는지 추적하는 것을 매우 어렵게 만듭니다. 에서. 이는 파이썬에서 일반적인 단순한 정신 (또는 좋은 프로그래밍 습관)에 위배됩니다.

다른 클래스의 하위 클래스를 만들면 "is a"관계가 설정됩니다. 당신의 수업은 정말로 그 10 가지 전부입니까? 아니면 이미 구현 된 동작 중 일부를 얻기 위해 상속하고 있습니까? SOLID과 같은 객체 지향 디자인의 기본 원칙을 살펴보고 때로는 composition over inheritance을 선호 할 수도 있고 entity–component–system과 같은 대체 아키텍처 패턴을 선호 할 수도 있습니다.