我重構一些代碼,發現這個(簡化當然,但總的想法):在構造函數中修改其他對象的狀態:設計no-no?
class Variable:
def __init__(self):
self.__constraints = []
def addConstraint(self, c):
self.__constraints.append(c)
class Constraint:
def __init__(self, variables):
for v in variables:
v.addConstraint(self)
該約束的構造函數修改其他對象的狀態,而不是它自己的味道有點時髦給我的事實。其他人認爲 - 這是好的,還是重構的主要候選者?
編輯:我關心的不是父/子關係,而是它在構造函數中而不是在單獨的方法中進行關聯。
在初始化做它(不是構造函數,這將是法'__new__' - 由你運行'__init__'的實例已建成的時候,雖然尚未初始化)保證類不變量,例如「每個約束總是存在於一定數量的變量中「。否則將意味着據稱「初始化」約束實際上不符合類不變式;爲什麼你會以任何方式想到這樣的情況?請看我的答案更多的例子...! – 2009-10-15 18:01:08