Мы все знаем, что при использовании 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
, но у меня все еще есть их в экземпляре.
Как избавиться от них навсегда?