【发布时间】:2011-01-26 10:49:47
【问题描述】:
我有一个包含两个方法 A 和 B 的类。该类将被子类化。有没有一种优雅的方法来强制 B() 只在 A() 方法中对类的对象调用?
让我们限制它,说 A() 只在一个地方被调用,但子类实现 A() 并且可以选择在其中调用 B()。我想到的一种方法是通过设置一个全局变量来包装 A() 调用,该变量表示可以调用 B(),并且 B() 会在调用该变量时检查该变量。但这似乎并不优雅。
有什么建议吗?
【问题讨论】:
-
只需通过添加前导下划线将
B设为私有,因此它是_B。这告诉人们这是一种私有方法。我认为在 Python 中没有一种简单甚至可靠的方式来做你想做的事情。 -
听起来,从 OOP 设计的角度来看,您的基类对派生自它的类了解太多。
-
在前面加一个下划线来表示“私人”,并假设使用 tnis 对象的人是聪明的,然后继续解决更重要的问题。
标签: python