python - 在 python 2.7 中创建类的实例

标签 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.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/

相关文章:

python-2.7 - 如何删除 Tkinter 网格布局中的整行

python - 网络服务器的瓶加载时间非常慢

python - 无法在损失函数中使用VGG特征的MSE

python - 如何为 z = f(x, y) 绘制平滑的 2D 颜色图

python - 如何从 Brown 语料库访问原始文档?

python - 在 python 中打印来自父类(super class)的元素

c# - 创建用于获取变量值的函数

python - 从文本中删除一行

ios - 类变量在重新初始化后保持不变

Python dict.get() 引发 KeyError