我写了一段代码:
class NewsStory(object):
def __init__(self, guid, title, subject, summary, link):
NewsStory.guid = guid
NewsStory.title = title
NewsStory.subject = subject
NewsStory.summary = summary
NewsStory.link = link
def getGuid(self):
return self.guid
def getTitle(self):
return self.title
def getSubject(self):
return self.subject
def getSummary(self):
return self.summary
def getLink(self):
return self.link
当我添加一个实例时:
test = NewsStory('foo', 'myTitle', 'mySubject', 'some long summary', 'www.example.com')
print test.getGuid()
给我 foo
,这是正确的。但是,如果我连续创建两个实例:
test = NewsStory('foo', 'myTitle', 'mySubject', 'some long summary', 'www.example.com')
test1 = NewsStory('foo1', 'myTitle1', 'mySubject1', 'some long summary1', 'www.example1.com')
print test.getGuid()
和 print test1.getGuid()
都给了我 foo1
但没有 foo
。为什么会这样?是否有一种方法可以修改我的类定义或类内的函数以避免新创建的实例覆盖旧实例?
谢谢。
最佳答案
您需要在 __init__
函数中创建这些变量 instance 变量,而不是 class 变量。
实例变量如下所示:
self.guid = guid
类变量如下所示:
NewsStory.guid = guid
类变量对于类的所有成员都是相同的,但实例变量对于该类的实例是唯一的。
关于python - 在 python 2.7 中创建类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20737238/