所以我有TerrainManager
类,它将在列表中存储很少TerrainStructure
对象。我在名为 generate_pillar_points()
的 TerrainStructure
类中有一个方法,它用于设置x, y
值以TerrainStructure
属性。
我应该分配属性来引用类吗?我认为这可能是一个好方法,因为我可以查看该属性并看到这将是一个Point
对象。或者我应该将默认值设置为 None 或 0,稍后,当我调用 generate_pillar_points()
将这些属性设置为Point
类的实例时
我问这个问题是考虑到这一点的:
a = Cls # reference to Cls
a = Cls() # instance of Cls
这是代码,我相信我会更清楚我想问什么。
class Point(object):
def __init__(self, x, y):
self.x, self.y = x, y
class TerrainStructure(object):
def __init__(self):
# what default values should this points have?
self.top_left, self.top_right = Point, Point
self.bottom_left, self.bottom_right = Point, Point
# picks 4 random points between fixed ranges
# and assigns them to the above attributes
self.generate_pillar_points()
设置为 None
。这是唯一理智的选择。或者,如果始终调用在构造函数中为它们赋值的方法,则不要分配任何内容。
将它们设置为类本身会非常奇怪。此外,除了使您的代码更难调试之外,它不会提供任何价值 - 想象一下您的方法中的赋值由于某种原因没有发生(可能因为笨拙而意外地分配给self.c
而不是self.x
)。然后你不会得到一个很好的异常,显示值是 None 而是奇怪的东西或取决于代码根本没有异常!
我强烈建议你通过属性设置这些,这些属性验证你传递的值以确保它们是 Point 的子类。