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

dra*_*ons 0 python

所以我有一个TerrainManager类,它会TerrainStructure在列表中存储很少的对象.我有一个方法,在TerrainStructure类中称为generate_pillar_points()它用于设置属性的x, yTerrainStructure.

我应该分配属性来引用类吗?我认为这可能是一个很好的方法,因为我可以查看属性并看到它将是一个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()
Run Code Online (Sandbox Code Playgroud)

Thi*_*ter 6

将它们设置为None.这是唯一理智的选择.如果总是调用在构造函数中为它们赋值的方法,则不要指定任何内容.

将它们设置为类本身将非常奇怪.此外,它不会提供任何价值,除了使您的代码更难调试 - 想象您的方法中的任务由于某种原因没有发生(可能意外分配,self.c而不是self.x因为你是笨拙的).然后你不会得到一个很好的异常,表明值是None但是奇怪的东西或者根据代码没有异常!