在面向对象 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 变量。
我有以下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 变量。