【发布时间】:2010-12-07 01:56:23
【问题描述】:
我正在重构一些代码并发现了这个(当然是简化的,但总体思路):
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)
Constraint 的构造函数修改了其他对象的状态而不是它自己的状态,这对我来说有点奇怪。其他人怎么看 - 这可以吗,或者它是重构的主要候选者?
编辑:我关心的不是父/子关系,而是它在构造函数内部而不是在单独的方法中链接。
【问题讨论】:
-
在初始化程序中执行它(不是构造函数,那将是方法
__new__-- 到您运行__init__时,实例已经构造,但尚未初始化)保证建立了诸如“每个约束总是存在于一定数量的变量上”的类不变量。否则将意味着所谓的“初始化”约束实际上不满足类不变量;为什么你会认为这种情况更可取?!请查看我的答案以获取更多示例...!
标签: python oop refactoring constructor