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
,则将相同的参数 x
和 y
传递给 Circle
class像这样:
class Circle:
def __init__(self, r, x, y):
self.rayon = r
self.centre = Point(x, y)
然后,Point
将在实例化 __init__
时采用那些 x
和 y
参数
如果你不给它任何东西,比如 Point()
,它会抛出一个错误,指出你没有必需的位置参数 x
和 y
。另请注意,我已从 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
我目前正在测试 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
,则将相同的参数 x
和 y
传递给 Circle
class像这样:
class Circle:
def __init__(self, r, x, y):
self.rayon = r
self.centre = Point(x, y)
然后,Point
将在实例化 __init__
时采用那些 x
和 y
参数
如果你不给它任何东西,比如 Point()
,它会抛出一个错误,指出你没有必需的位置参数 x
和 y
。另请注意,我已从 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