python - Python 中的动态对象类似于 AS3

标签 python actionscript-3 object dynamic

在 AS3 中我们有一个关键字来定义动态对象:

dynamic class DynamicClass { ... }

因此,我们可以在运行时添加或删除属性。

var dynamicInstance:DynamicClass = new DynamicClass();
// add a property like this...
dynamicInstance.newProperty = 'newValue';
// or this...
dynamicInstance['otherProperty'] = 'otherValue';

我可以访问甚至遍历整个动态属性集合:

for (var name:String in dynamicInstance)
    trace(name, '=', dynamicInstance[name])
// output:
//     newProperty = newValue
//     otherProperty = otherValue

我也可以删除那些属性:

// and delete a property like this...
delete dynamicInstance.newProperty;
// or this...
delete dynamicInstance['otherProperty'];

这在 Python 中如何完成?

最佳答案

python 中的所有类都是动态的。你可以像这样访问它们

class a:
   pass

>>> a.name="rob"
>>> a.age=45
>>> dir(a)
['__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__ge__',
 '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__',
 '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
 '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'name']

>>> a.age
45
>>> a.name
'rob'

>>> setattr(a,"job","fischer")
>>> getattr(a,"name")
'rob'

如果您想更改类的所有实例,您可以轻松编写一个 for 循环,忽略以 __ 开头的实例

关于python - Python 中的动态对象类似于 AS3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5488046/

相关文章:

python - 如何在 python 中获取异常类型的错误号列表 (Errno)?

python - 我如何在 Tensorflow 中准备自己的数据集(数千张图像)?

actionscript-3 - 通过 AS3 字典进行高效循环

apache-flex - Flex/ActionScript - 围绕其中心旋转 Sprite

java - 如何将(JavaBean)对象的状态复制到另一个现有对象中?

c# - 在对象初始值设定项中使用后清除变量是否也会清除对象的属性?

python - 没有名为 'sympy' 的模块

python - 如何使用 Python 检测有向图中的循环?

actionscript-3 - AS3 PNG编码器?

javascript - 如何从嵌套对象中获取键值