12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- class Rectangle:
- __slots__ = '__width', 'height'
- def __init__(self, a, b):
- self.width = a
- self.height = b
- @property
- def width(self):
- return self.__width
-
- @width.setter
- def width(self, value):
- print("Setter called")
- self.__width = value
- @property
- def perimetr(self):
- return (self.height + self.width) * 2
- @property
- def area(self):
- return self.height * self.width
- # У класса наследника будет атрибут __dict__ если не задать атрибут __slots__
- class Square(Rectangle):
-
- # этот slots расширяет имена родительского класса
- __slots__ = 'color'
- def __init__(self, a, b, color):
- super().__init__(a, b)
- self.color = color
- def main():
- a = Rectangle(3, 4)
- b = Rectangle(5, 6)
- print(b.perimetr, b.area)
- s = Square(3, 6, 'red')
- # print(s.__dict__)
- if __name__ == '__main__':
- main()
|