首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >定义类外部的实例变量

定义类外部的实例变量
EN

Stack Overflow用户
提问于 2015-08-29 08:47:45
回答 2查看 1.3K关注 0票数 1

今天,我在接受采访时被问到一个问题:“如果我们在类之外定义实例变量,它会显示出任何错误”。

代码语言:javascript
代码运行次数:0
运行
复制
class temp():
    a=0
    b=0
    def __init__(self,*args):
        temp.a = args[0]
        temp.b = args[1]
        if len(args)>2 and args[2]:
            print 'extra',args[2]

    def display(self):
        print self.a,self.b,self.c

a = temp(4,9)
b = temp(5,3)
a.c = 20
a.display()

如果我运行上面的代码,我得到了c= 20的值。我来自c++背景,认为这是错误,但是not...why就像not...why允许在类之外创建变量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-29 09:10:23

我建议在类和命名空间上阅读Python。在Python中,实例只是另一种类型的命名空间,在类定义之外定义实例变量只需要在定义实例的名称和值字典中添加一个条目。将此与C进行对比,其中实例是根据类定义中布局的模式构造的实际内存块。一旦定义了类,就不能在事实之后插入属性。

票数 3
EN

Stack Overflow用户

发布于 2015-08-29 09:02:41

在您的例子中,a是类temp的一个实例。您可以向它添加任何属性。在源代码中,您可以自己检查它,它将通过简单的指针操作将这个属性添加到这个实例中。我认为这是动态语言的关键点,它与C++完全不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32284259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档