簡體   English   中英

在python 2.7中創建類的實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM