【发布时间】:2021-06-16 20:44:11
【问题描述】:
我有以下课程
class Dob:
def __init__(self):
self.welcome_text = ""
#Computes DOB
def calc_dob(self):
pass
#Get User Input
def get_input(self, msg):
pass
def __repr__(self):
print(self.welcome_text)
total_days = self.calc_dob()
return str(total_days)
然后这样称呼它:
if __name__ == "__main__":
print(Dob())
最初我认为这没问题,但将其导入 PyCharm IDE,它显示警告方法 calc_dob 和 get_input 可能是静态的。
按照 IDE 的建议,它将方法移到类之外。
剩下的就是 __repr__ 方法。这让我觉得上面的类有问题。
代码是否正常,我应该只是用 @staticmethod 注释标记方法?或者我的想法不是面向对象的,我怎样才能使它面向对象。
任何帮助将不胜感激。
编辑: 为了简单起见,我删除了代码(方法的实现)。警告的原因是我没有使用类的实例。我要问的是这是否是一个正确的实现
【问题讨论】:
-
我认为 PyCharm 告诉
calc_dob和get_input需要是静态的。因为这些方法中没有代码。一旦这些方法实现了,也许它会很好用 -
@tvgriek 的 cmets 在这里很好。 “生日”对象应该包含一个日期。它不应该打印欢迎信息。它不应该要求输入。 I/O 是调用者的责任。你不知道这个对象是否总是与控制台一起使用。
-
非常感谢@TimRoberts。我想我明白了
标签: python oop object-oriented-analysis