【发布时间】:2016-06-11 17:18:32
【问题描述】:
一段时间以来,我一直在努力思考类方法。我知道它们是如何工作的,但我不明白为什么要使用它们或不使用它们。
例如。
我知道我可以使用这样的实例方法:
class MyClass():
def __init__(self):
self.name = 'Chris'
self.age = 27
def who_are_you(self):
print('Hello {}, you are {} years old'.format(self.name, self.age)
c = MyClass()
c.who_are_you()
我也知道通过使用 classmethod 我可以调用 who_are_you() 而无需创建我的类的实例:
class MyClass():
name = 'Chris'
age = 27
@classmethod
def who_are_you(cls):
print('Hello {}, you are {} years old'.format(cls.name, cls.age)
MyClass.who_are_you()
我不明白为什么你会选择一种方法而不是另一种方法
【问题讨论】:
-
当你有实例变量时你使用实例方法。使用类方法,您不能拥有不同年龄或名称的不同实例
-
你通常不会创建一个类来代表一个人。通常,您创建一个类
Person,并创建它的实例来代表一个人。 -
按照 Ginger 所说,你将 Chris 和 27 传入 Person 类的构造函数,而不是将它们硬编码到类中
标签: python