0

如果我想创建一个其他类将继承的基类,但永远不会使用类变量,我应该将类变量设置为什么?

例如:

class Spam:
    time_to_cook = None

    def eat(self):
        ...

class SpamWithEggs(Spam):
    time_to_cook = Minutes(5)

    def eat(self):
        ...

所有子类都有自己的time_to_cook,因此它的值Spam对程序的运行没有影响。

class Spam:
    time_to_cook = None

对我来说看起来不错,但它没有提供有关time_to_cook. 所以我倾向于

class Spam:
    time_to_cook = Minutes(0)

但这可能会给人一种误导性的印象,即time_to_cook实际使用了 的值。

我也在考虑完全忽略它,而是在文档字符串中提及它。

4

2 回答 2

1

我喜欢shavenwarthog的回答,但是直接使用异常作为属性的值有点奇怪。所以,相反,无论你调用什么方法,你都可以传递一些会引发错误的东西:

class Complainer:
    def __getattr__(self, name):
        raise NotImplementedError 

并像这样使用它:

class Spam(object):
    time_to_cook = Complainer()

然后,每当您尝试调用任何Minute' 方法时,都会出现异常。或者,如果你永远不会Spam直接实例化,你可以让它完全抽象而不用担心它。

于 2014-06-16T01:16:38.677 回答
0

我建议NotImplementedError。它没有给出关于类型应该是什么的任何提示,但很明显不应该直接使用该值。

class Spam(object):
    time_to_cook = NotImplementedError

    def eat(self):
        ...

class SpamWithEggs(Spam):
    time_to_cook = Minutes(5)
于 2014-06-14T18:35:44.073 回答