Я хотел бы создать класс Python, который внешне представляется подклассом другого класса, но на самом деле не наследует его атрибуты.Подкласс Python, который не наследует атрибуты
Например, если мой класс называется B
, я хотел бы isinstance(B(), A)
вернуться True
, а также issubclass(B, A)
, но я не хочу B
иметь атрибуты, определенные для А. Возможно ли это?
Примечание: Я не контролирую реализацию A
.
Почему я забочусь: Модуль, в котором я работаю, проверяет, что переданный объект является подклассом A
. Я хочу определить необходимые атрибуты в B
, не наследуя лишние атрибуты, определенные в A
(реализация которых я не контролирую), потому что я использую __getattr__
для передачи некоторых вызовов атрибутов на обернутый класс, и если эти атрибуты определяются наследованием от A, __getattr__
не будет вызываться.
Возможно, вы захотите ознакомиться с абстрактными базовыми классами. Кроме того, вы нацеливаете python 2 или 3? – MisterMiyagi
Ориентация на Python 3. –
Btw. это оказалось проблемой [XY] (http://meta.stackexchange.com/a/66378/141542). Вы должны не спрашивать конкретно о своей единственной идее, чтобы решить вашу первоначальную проблему и вместо этого указать на свою оригинальную проблему. – poke