Как заставить дочерний класс наследовать НЕКОТОРЫЕ методы и свойства от своего родителя? - PullRequest
1 голос
/ 20 апреля 2020

Мы все знаем, что при использовании super().__init__() мы импортируем все свойства из родительского объекта.

Но что, если я хочу наследовать только некоторые свойств - не все из них ?

Преимущество было бы, если бы я разработал приложение, чтобы конечный пользователь мог видеть и получать доступ только к правильным значениям и методам.

На этом я заканчиваю с ...

    class Window:
      def __init__(self, width, height, minimize, maximize, close):
          self.width = width
          self.height = height
          self.min = minimize
          self.max = maximize
          self.close = close

     @property # or regular method
     def resolution(self):
         return [self.width, self.height]

    class Button(Window):
      def __init__(self, width, height, btn):
          super().__init__(width, height, None, None, None)
          self.width = int(self.width / 3) * btn # some calculus here
          self.height = int(self.height / 3) * btn 

      @property
      def resolution(self):
          pass

    button_1 = Button(102, 345, 1)
    button_2 = Button(674, 54, 2)

Если я запускаю dir(button_1), я вижу все методы и свойства ... вот так:

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'close', 'height', 'max', 'min', 'resolution', 'width']

Я могу переопределить методы / специальные свойства с pass и инициализировать свойства с None, но у меня все еще есть их в экземпляре.

Как избавиться от них навсегда?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...