2016-03-01 107 views
1

我正在学习类和基于对象的编程(在Python 2.7中)的基础知识。我试图能够访问我的圈子类中的点类中的对象,但我得到一个无属性错误。Python使用另一个类中的一个类的对象

class Point: 
    #constructor 
    def __init__(self,x,y): 
    self.x = x 
    self.y = y 

class Circle: 
    def __init__(self,center,radius): 
    self.center.x = center.x 
    self.center.y = center.y 
    self.radius = radius 

p1 = Point(2,3) 
#print p1 
c1 = Circle(p1, 2) 

回答

0

一种解决方案是将x的你的点对象的值和y的属性传递给圆,和治疗上的圆的中心为元组(或列表):

class Point: 
    #constructor 
    def __init__(self,x,y): 
    self.x = x 
    self.y = y 

class Circle: 
    def __init__(self, center, radius): 
    self.center = center 
    self.radius = radius 

p1 = Point(2,3) 
c1 = Circle((p1.x, p1.y), 2) 

这里您将x和y指定为p1的属性。主要的是你必须指定你想要传递的属性来构建圆。还有其他方法可以做你想做的事情,但这取决于最终目标是什么。

编辑: 在回答您的意见,你可以这样做:

class Circle: 
    def __init__(self, center_x, center_y, radius): 
    self.center_x = center_x 
    self.center_y = center_y 
    self.radius = radius 

p1 = Point(2,3) 
c1 = Circle(p1.x, p1.y, 2) 
+0

感谢您的答复。有没有一种方法可以实现,以便我可以分别抓住x和y值,如调用center.x返回2,center.y返回3? – blazecrooks

+0

在我看到您的回复之前,我只是想出了它。我所要做的只是初始化self.center = center。然后我打电话通过c1 = Circle(p1,2)并使用c1.center.x – blazecrooks

相关问题