[英]create an instance of class in python 2.7
我寫了一個代碼:
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__
函數實例變量而不是類變量中創建這些變量。
實例變量如下所示:
self.guid = guid
類變量如下所示:
NewsStory.guid = guid
類變量對於該類的所有成員都是相同的,但是實例變量對於該類實例是唯一的。
創建該類的實例后,將調用__init__
方法。 第一個參數,按慣例稱為self
,是類的實例。 NewsStory
本身就是課程。
在代碼中,您正在創建類變量。 您需要實例變量:
self.guid = guid
您正在修改所有對象共有的類變量。 您應該做的是在對象中創建這些變量,如下所示
self.guid = guid
self.title = title
self.subject = subject
self.summary = summary
self.link = link
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.