当前位置: 首页 > 面试题库 >

为什么我的实例变量不在__dict__中?

饶曦之
2023-03-14
问题内容

如果我A按如下方式创建一个类:

class A:
    def __init__(self):
        self.name = 'A'

检查__dict__成员看起来像{'name': 'A'}

但是,如果我创建一个类B

class B:
    name = 'B'

__dict__ 是空的。

是什么两者之间的区别,为什么没有name在显示出来B__dict__


问题答案:

B.name是类属性,而不是实例属性。它显示在中B.__dict__,但不在中b = B(); b.__dict__

这种区别在某种程度上被模糊了,因为当您访问实例上的属性时,类dict是一个后备。因此,在上面的示例中,b.name将为您提供的值B.name



 类似资料:
  • 问题内容: 在Python中,为类实例创建的字典与包含该类相同属性的字典相比很小: 使用Python 3.5.2时,以下调用产生: 节省了字节! 另一方面,使用Python 2.7.12,则返回相同的调用: 已保存字节。 在这两种情况下,字典显然具有 完全相同的内容 : 所以这不是一个因素。此外,这也仅适用于Python 3。 那么,这是怎么回事?为什么在Python 3中实例的大小如此之小? 问

  • 问题内容: 如果我对Python数据模型的理解是正确的,则类和类实例都具有包含所有属性的关联对象。但是,对于某些类实例(例如的实例)为什么没有属性,我有些困惑。 如果我创建一个自定义类: 然后,我可以说出实例变量: 但是,如果我尝试对内置实例执行相同操作,则会得到: 那么,为什么的实例没有属性? 问题答案: 默认情况下,在C中定义的类型的实例不具有__dict__属性。

  • 问题内容: 我读了这个问题不可变对象,并留下了关于不可变对象,并最终场一个问题: 为什么我们需要不可变类中的实例变量为最终变量? 例如,考虑以下不可变的类: 如果在上面的代码中没有set方法,而实例变量仅在构造函数中设置,为什么要求将实例变量声明为final? 问题答案: 有没有 要求 这样做的变量。但是,当您确实明确打算永远不更改变量时,通常这样做是一种好习惯,因为这不仅可以使变量避免错别字或其

  • 我读到了这个关于不可变对象的问题,留下了一个关于不可变对象和final字段的问题: 为什么我们需要不可变类中的实例变量成为最终变量? 例如,考虑这个不可变类: 如果在上面的代码中没有设置方法,并且实例变量只在构造函数中设置,那么为什么需要将实例变量声明为final?

  • 有一个代码: 当我试图获取或时,它只显示。但是 我不明白,为什么会这样。

  • 我读了很多关于应该使用的案例。 我读过的许多页面都说不应该用于私有实例变量,而应该由getters返回。 我认为将私有实例变量作为可选变量仍然是有用的。如果有人查看我的代码,他们可以看到一个值可以是空的,而不必检查留档是否可以返回空。 在Scala中,null从未使用过,它只是用于与Java的互操作性。如果值可以为null,建议始终使用可选值。这种方法对我来说更有意义。 这里有一页提到了它: ht

  • 我在Ubuntu中安装JDK有困难,我不能让它工作。谁能让我知道我做错了什么? 1-我从Oracle的网站下载了jdk-6u35-linux-i586.bin 2-我将下载的文件移到了家里/ 3-我使用chmod+x jdk-6u35-linux-i586.bin将其转换为可执行文件 4-我使用sudo./jdk1.6.0_35执行它 5-我使用mv jdk1.6.0_35//usr/local/

  • 问题内容: 我的任务是制作一个带有实例变量的程序,该变量应该由用户输入。但是我什至不知道什么是实例变量。什么是实例变量?如何创建一个?它有什么作用? 问题答案: 实例变量是在类内部但在方法外部声明的变量: 现在可以在其他类中实例化此IronMan类以使用这些变量,例如: 这就是我们使用实例变量的方式。无耻插头:来自实例本免费的电子书拉到这里这里。