- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在开发的游戏中遇到了一个棘手的问题。我正在使用 Pygame 来开发它。我碰巧是那些从不使用 default__dict__
对象变量的开发人员之一;我总是定义 __slots__
来阐明对象可以拥有的变量(我有一个类方法可以读取槽以确定配置文件中所需的变量)。
无论如何,我刚刚意识到这种努力在我的某些类(class)中不起作用;他们仍然有一个 __dict__
变量,并且可以分配任意属性,即使他们明确定义了他们的 __slots__
。我认为这是因为它们继承自 pygame.sprite.Sprite,它有一个 __dict__
。如果是这种情况,我该如何抑制这个字典的创建? (虽然我应该明确定义 __slots__
)或者我可能弄错了原因?感谢您的任何见解;很难通过搜索找到有关此特定问题的信息。
最佳答案
抑制任意属性和它们的 __dict__
容器的唯一方法是按原样使用 __slots__
并继承自具有相同功能的类。具有 __dict__
的类的子类将始终具有 __dict__
。解决它的唯一方法是不继承此类(但是,例如,改用 composition。)
关于Python - 禁止在子类中创建 __dict__ 类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6314205/
代码先行: class A(object): def foo(self): self.foo = 'foo' def bar(self): self.b
请看下面的片段: class Foo: class_var = "hi" foo = Foo() assert foo.class_var is Foo.class_var assert "c
>>> class A(object): pass ... >>> A.__dict__ >>> A.__dict__.__dict__ Traceback (most recent call la
如果我在 Python 解释器中运行以下代码: >>> object.__dict__ is object.__dict__ False 为什么结果是 False? 最佳答案 object.__dic
我感兴趣的是是否有一种方法可以可靠地内省(introspection) Python 实例以查看它的 __dict__ 尽管程序员可能会在途中抛出任何障碍,因为这将帮助我调试问题,例如意外的引用循环和
属性 __dict__ 应该包含用户定义的属性。但是如果我们打印一个空类的 __dict__,我也会得到: __module__ __dict__ __weakref__ __doc__ Python
我知道函数对象有一个 __dict__ .这很少用于向函数添加属性。有些人甚至用它来为函数添加注释。 我的疑问如下。如果有: def foo(): a = 2 return 在哪里 “一个
我对 dict 进行子类化,以便属性与键相同: class DictWithAttr(dict): def __init__(self, *args, **kwargs): s
我有一个字典,它的大小是 198526。 sys.getsizeof(dic)) # 198526 class Actor(object): def __init__(self):
给定一个任意类 X 作为输入,是否有可能找出 X 的实例是否有一个 __dict__? 我尝试了 hasattr(X, '__dict__'),但这不起作用,因为它检查类对象是否具有 __dict__
我需要定义一个名为“class”的类变量。我想直接在类命名空间中执行此操作,而不是在类方法中。显然,我不能直接说: class MyClass(object): a = 1 b = 2
这个问题在这里已经有了答案: Python class instance __dict__ doesn't contain all instance variables. Why? (3 个答案)
我试图直接使用 X.__dict__['x'] += 1 之类的东西修改类 __dict__ 中的值。那样修改是不可能的,因为类__dict__实际上是一个mappingproxy对象,不允许直接修改
我正在测试预定义的 字典 一个函数的属性,我得到了一个我没想到的结果。考虑以下代码: >>> def func(): x = 7 a = 0 print(fu
为什么这有效: class Bunch(dict): def __init__(self, *args, **kwargs): super(Bunch, self).__ini
代码在前, #Python 2.7 >>>class A(object): pass >>>a1 = A() >>>a2 = A() >>>A.__dict__ dict_proxy({
这个问题在这里已经有了答案: How do you programmatically set an attribute? (5 个答案) 关闭 6 年前。 我被告知我应该避免在我的代码中使用 sel
考虑这个例子,其中一个类 A 的所有实例的 __dict__ 将指向一个全局字典 shared。 shared = {'a': 1, 'b': 2} class A(object): def
有没有理由不这样做来比较两个对象: def __eq__(self, other): return self.__dict__ == other.__dict__ 与检查每个单独的属性相反:
我试图理解 python 中的束模式,我相信可以用以下方式表达: class Bunch: def __init__(self, **kwds): self.__dict__.
我是一名优秀的程序员,十分优秀!