perimeter field . , . .
, Square from Rectangle . , , Rectangle. , .
class Rectangle(Shape):
def __init__(self, x, y, a, b):
self.a = a
self.b = b
super().__init__(x, y)
@property
def perimeter(self):
return (self.a + self.b) * 2
class Square(Rectangle):
'''Just an alternate constructor for Rectangle'''
def __init__(self, x, y, a):
super().__init__(x, y, a, a)
:
>>> my_square = Square(0, 0, 10)
>>> my_square.perimeter
40
>>> my_rect = Rectangle(0,0, 10, 5)
>>> my_rect.perimeter
30
, .
>>> my_square.perimeter = 10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: can't set attribute
perimeter a b
>>> my_square.perimeter = 10
>>> print(my_square.perimeter, my_square.a, my_square.b)
10 10 10
, , , - .
class Circle(object):
def __init__(self, radius):
self.radius = radius
@property
def diameter(self):
return self.radius * 2
@diameter.setter
def diameter(self, diam):
self.radius = diam / 2
:
>>> my_circle = Circle(radius=5)
>>> my_circle.diameter
10
>>> my_circle.diameter = 40
>>> my_circle.radius
20