在Python2.7中创建类的实例
我写了一段代码:在Python2.7中创建类的实例,python,class,python-2.7,instance,Python,Class,Python 2.7,Instance,我写了一段代码: class NewsStory(object): def __init__(self, guid, title, subject, summary, link): NewsStory.guid = guid NewsStory.title = title NewsStory.subject = subject NewsStory.summary = summary NewsStory.lin
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
。为什么会这样?是否有一种方法可以修改类内的类定义或函数,以避免新创建的实例覆盖旧实例
谢谢。您需要在
\uuuu init\uuuu
函数实例变量中生成这些变量,而不是类变量
实例变量如下所示:
self.guid = guid
NewsStory.guid = guid
类变量如下所示:
self.guid = guid
NewsStory.guid = guid
类的所有成员的类变量都是相同的,但实例变量对于该类的实例是唯一的。您需要在
\uuuu init\uu
函数实例变量中生成这些变量,而不是类变量
实例变量如下所示:
self.guid = guid
NewsStory.guid = guid
类变量如下所示:
self.guid = guid
NewsStory.guid = guid
类的所有成员的类变量都是相同的,但实例变量对于该类的实例是唯一的。在创建类的实例后调用
\uuuu init\uuuu
方法。第一个参数,按惯例称为self
,是类的实例<代码>新闻故事是类本身
在代码中,您正在创建类变量。您需要实例变量:
self.guid = guid
创建类的实例后,将调用
\uuuu init\uuu
方法。第一个参数,按惯例称为self
,是类的实例<代码>新闻故事是类本身
在代码中,您正在创建类变量。您需要实例变量:
self.guid = guid
您正在修改所有对象共用的类变量。您应该做的是在对象中创建这些变量,如下所示
self.guid = guid
self.title = title
self.subject = subject
self.summary = summary
self.link = link
您正在修改所有对象共用的类变量。您应该做的是在对象中创建这些变量,如下所示
self.guid = guid
self.title = title
self.subject = subject
self.summary = summary
self.link = link