Python классы наследование
У меня 2 класса
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def dist(self, point):
distance = ((self.x - point.x)**2 + (self.y - point.y)**2)**0.5
return distance
def x(self):
return self.x
def y(self):
return self.y
class Circle(Point):
def __init__(self, r, Point):
self.r=r
self.point=Point
def center(self):
return self.point
Не понимаю каким образом реализовать такую конструкцию, чтобы образаясь к свойству X свойства radius объекта circle я получал значение x, а при обращении к Y соответственно y. Чтобы при создании объекта c1 c1=Circle(4, Point(1.5,1)), была возможность получить значение x c1.center.x==1.5
Ответы (1 шт):
Автор решения: Xander
→ Ссылка
У вас center - это метод. Чтобы получить из него значение, недостаточно обратиться к нему по имени, его ещё нужно вызвать. Для этого нужно после его имени добавить скобки:
c1.center().x
Впрочем, есть альтернативный вариант. Можно использовать у метода декаратор property, и тогда он начнёт вести себя как обычный аттрибут, и можно будет вызывать его так, как у вас в примере
class Circle(Point):
def __init__(self, r, Point):
self.r=r
self.point=Point
@property # Добавляем вот такое
def center(self):
return self.point
c1 = Circle(4, Point(1.5,1))
print(c1.center.x) # И этот вариант начинает работать