在面向对象 Python 中实现生日 Class 的正确方法

Proper way to Implement a Birthday Class in Object Oriented Python

我有以下class

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 和 [=30] 的警告=]get_input 可以是静态的。

根据 IDE 的建议,它将方法移到 class 之外。

剩下的就是__repr__方法。这让我觉得上面的Class有问题。

代码是否正确,我应该用 @staticmethod 注释标记方法?或者我的想法不是面向对象的,我怎样才能让它成为面向对象的。

如有任何帮助,我们将不胜感激。

编辑: 为了简单起见,我删除了代码(方法的实现)。警告的原因是我没有使用 Class 的实例。我要问的是这是否是一个正确的实现

我认为 DoB 对象应该有一项工作:保存出生日期。问题是这是否需要。我们已经有了这个的日期对象。 DoB 的计算宁愿存在于 DOBHelper 对象或函数中。 pycharm 移动这些方法的原因是因为您没有在其中使用任何 class 变量。