繁体   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