【问题标题】:Recommended nomenclature: a better term than "parent"?推荐的命名法:比“父母”更好的术语?
【发布时间】:2011-07-10 16:50:20
【问题描述】:

我正在编写一个基于“状态”示例here 的连接状态保持程序。

在示例中,Radio 类在实例化 AmState 时将指针(更好的术语?)传递给 AmState:

class AmState(State):
    def __init__(self, radio):
    self.radio = radio

...
class Radio(object):
    def __init__(self):
        ...
        self.amstate = AmState(self)

该示例将此指针 (?) 存储在名称“radio”中,但是该值的正确 Python/OO 术语是什么?我一直想说“父母”,但“AmState 的 父母 是“国家”,而不是“无线电”。

在记录我的代码时,我应该在这里使用什么术语来最大程度地减少混淆?

谢谢

【问题讨论】:

  • 有很多选择,但是“父母”没有错。请注意,这通常不是一个很好的模式,因为您正在为这些对象中的每一个创建一个循环引用,这会降低 GC 的效率,并且如果您有任何 __del__ 方法会让您头疼。
  • 我不同意@Glenn Maynard 关于使用“父”是可以的,因为该术语通常用于指定派生类的基类(或类)——这不是 OP是在做。事实上,这正是我认为问题的标题。
  • @martineau:“父级”是用于描述层次结构的通用术语;类只是使用它的一种情况。它绝不是特定于类的。
  • 也许我只是不明白,但我认为您链接到的 State 示例很奇怪。 Python 不需要状态对象,我们有生成器来保持状态。
  • @Glenn Maynard:我同意,技术上“父母”是正确的。但我发现自己每次看到“self.parent”时都会想到“父类”。如果我在开发代码时感到困惑,那么当我(或其他人)稍后回来并试图理解它时,情况只会更糟。因此,呼吁推荐替代品。基本上,“父母”一词(太)超载了。 :-)

标签: python oop terminology


【解决方案1】:

这种组合的常用术语是“所有者”。而您正在寻找的“更好的术语”是“参考”。

【讨论】:

  • +1:完全同意“参考”,并且“所有者”这个词是有意义的,因为从代码 sn-p 来看,它看起来像 Radio 有一个 @987654322 @.
【解决方案2】:

我认为 GOF 设计模式是最接近经典的东西,它使用“上下文”。

【讨论】:

  • 在 GOF State 模式中,Context——对应于代码 sn-p 中的Radio——引用了State,但它们与代码 sn-p 不同,没有倒数。根据本书中的其他模式,这种引用的好名字可能是“所有者”。根据具体的应用,想到的其他一些可能是“控制器”或“容器”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
相关资源
最近更新 更多