我应该将__init__属性分配给类引用还是类似 None 的东西



所以我有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 的子类。

最新更新