在python中定义子类时如何避免重复自我?

约翰·索尔特

我正在尝试构建一种算法,该算法可以构建有趣但符合语法要求的句子。作为此过程的一部分,我需要将单词分类为不同的类别,并想探索使用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)

我希望所有单词都共享certein方法和属性,例如,“长度”等于其名称的长度。但是,我只需要在最低级别(在本例中为代理)下命名一个对象,因此在每个子类init使用一个名称似乎是多余的

总而言之,有什么方法可以达到上述代码的相同最终结果,而无需编写以下广告内容吗?

def __init__(self, name):
    self.name=name
    super().__init__(name) 
Reblochon面膜

以下内容使您的代码枯竭:

class word:

    firstLetter: str = ''

    def __init__(self, name: str) -> None:
        self.name = name
        self.length: int = len(name)
        if self.length:
            self.firstLetter = self.name[0]        


class noun(word):
    pass


class agent(noun):
    pass

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章