Python - 内部 class 的哪些参数?

Python - Which parameters for inner class?

我目前正在测试 Python 中的 classes。当我尝试使用内部 classes 时,我真的不知道我应该在其他 classes 中为它们使用哪些参数。

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

class Circle:
    def __init__(self, r, ???):
        self.rayon = r
        self.centre = self.Point()

在这部分代码中,我为 init 添加了额外的参数,但我真的不知道我应该为 Circle 中的 self.centre 使用哪些参数class,考虑到center是一个Point对象。

谢谢!

如果要在 Circle 中初始化 Point,则将相同的参数 xy 传递给 Circle class像这样:

class Circle:
    def __init__(self, r, x, y):
        self.rayon = r
        self.centre = Point(x, y)

然后,Point 将在实例化 __init__ 时采用那些 xy 参数

如果你不给它任何东西,比如 Point(),它会抛出一个错误,指出你没有必需的位置参数 xy。另请注意,我已从 Point 中删除 self,因为 self.Point 尚未在 Circle

中定义

无论您是想通过一个额外的 (x,y) 还是整个 Point class 都没有关系。 Point不是Circle的成员变量,所以代码需要self.centre = Point(...),而不是self.centre = self.point(...) #WRONG!

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __str__(self):
        return "(%d,%d)" % (self.x, self.y)

class CircleA:
    def __init__(self, r, x, y):
        self.radius = r
        self.centre = Point( x, y )
    def __str__(self):
        return "CircleA at %s, radius=%d" % (str(self.centre),self.radius)

class CircleB:
    def __init__(self, r, p):
        self.radius = r
        self.centre = p

    def __str__(self):
        return "CircleB at %s, radius=%d" % (str(self.centre),self.radius)

但是对象的创建必须不同,才能匹配:

circle1 = CircleA( 10, 0, 0 )
print("circle1 is " + str(circle1))

circle2 = CircleB( 10, Point( 0, 0) )
print("circle2 is " + str(circle2))

给予:

python3 ./circle.py 
circle1 is CircleA at (0,0), radius=10
circle2 is CircleB at (0,0), radius=10