作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一种算法来构造有趣但合乎语法的句子。作为其中的一部分,我需要将单词分为不同的类别,并想探索使用 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 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
关于python - python中定义子类时如何避免重复self?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57643809/
我正在实现谱聚类算法,我必须确保矩阵(拉普拉斯矩阵)是半正定矩阵。 检查矩阵是否为正定矩阵 (PD) 就足够了,因为可以在特征值中看到“半”部分。矩阵非常大(nxn,其中 n 是几千的数量级)所以特征
我是一名优秀的程序员,十分优秀!