所以我有一个TerrainManager
类,它会TerrainStructure
在列表中存储很少的对象.我有一个方法,在TerrainStructure
类中称为generate_pillar_points()
它用于设置属性的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()
Run Code Online (Sandbox Code Playgroud)
将它们设置为None
.这是唯一理智的选择.如果总是调用在构造函数中为它们赋值的方法,则不要指定任何内容.
将它们设置为类本身将非常奇怪.此外,它不会提供任何价值,除了使您的代码更难调试 - 想象您的方法中的任务由于某种原因没有发生(可能意外分配,self.c
而不是self.x
因为你是笨拙的).然后你不会得到一个很好的异常,表明值是None但是奇怪的东西或者根据代码没有异常!