【发布时间】:2019-08-25 06:40:01
【问题描述】:
我正在尝试构建一种算法来构建有趣但符合语法的句子。作为其中的一部分,我需要将单词分类为不同的类别,并想探索使用 OOP 来实现这一点,但我正在努力避免违反 DRY。下面是一个简化的例子。
class word:
def __init__(self,name):
self.name = name
self.firstLetter = self.name[0]
self.length = len(name)
class noun(word):
def __init__(self, name):
self.name=name
super().__init__(name)
class agent(noun):
def __init__(self, name):
self.name=name
super().__init__(name)
我希望所有单词都共享某些方法和属性,例如“长度”等于他们名字的长度。但是,我只需要在最低级别(在本例中为代理)命名一个对象,因此在每个子类的 init 中指定一个名称似乎是多余的。
总之,有没有什么方法可以实现与上述代码相同的最终结果,而无需编写以下令人作呕的广告?
def __init__(self, name):
self.name=name
super().__init__(name)
【问题讨论】:
-
不要覆盖子类的构造函数?
-
你能告诉我如何在不这样做的情况下编写“名词”的类定义吗?
-
class noun(word): pass