列出对像属性,for(var i in obj)[转]

本文介绍使用ActionScript 3 (AS3) 动态创建对象的方法,并通过实例展示了如何遍历这些对象及数组。此外,还探讨了for...in与for each...in循环的区别及其应用场景。


function  listProperties(obj, objName) {
     var  result = "" ;
     for  ( var  i in  obj) {
         result += objName + "."  + i + "="  + obj[i] + "\n" ;
     }
     alert(result);
}
/*库中有个MC*/
var  mc:MC;
var  arr: Array  = new  Array   ;
for  ( var  i: int = 0 ; i< 10 ; i++)
{
     mc = new  MC  ;
     mc.x = 100 ;
     mc.y = 100 ;
     addChild(mc);
     arr.push(mc);
}
for  ( var  a in  arr)
{
     trace (a);
     removeChild(arr[a]);
}
arr = [];
trace (arr.length);
var  count: int  = container.numChildren;
for  ( var  i: int  = 0 ; i < count; i++)
{
     container.removeChildAt( 0 );
}
/*for..in遍历对象的动态属性或数组中的元素,
并对每个属性或元素执行 statement。
对象属性不按任何特定的顺序保存,
因此属性看似以随机的顺序出现。
固定属性(如在类中定义的变量和方法)
不能由 for..in 语句来枚举。
要获得固定属性列表,请使用 flash.utils 包中的 describeType() 函数。
 
for each..in 循环用于循环访问集合中的项目,它可以是 XML 或 XMLList 对象中的标
签、对象属性保存的值或数组元素。例如,如下面所摘录的代码所示,您可以使用 for
each..in 循环来循环访问通用对象的属性,但是与 for..in 循环不同的是,for each..in
循环中的迭代变量包含属性所保存的值,而不包含属性的名称:*/
var  myObj: Object  = {x: 20 ,y: 30 };
for  ( var  num0 in  myObj)
{
     trace (num0);
     trace (myObj[num0]);
}
for  each  ( var  num in  myObj)
{
     trace (num);
}
// 输出:
// 20
// 30
//可以循环访问 XML 或 XMLList 对象,如下面的示例所示:
var  myXML:XML = <users>
<fname>Jane</fname>
<fname>Susan</fname>
<fname>John</fname>
</users>;
for  ( var  item0 in  myXML.fname)
{
     trace (item0);
     trace (myXML.fname[item0]);
}
for  each  ( var  item in  myXML.fname)
{
     trace (item);
}
/* 输出
Jane
Susan
John
*/
//还可以循环访问数组中的元素,如下面的示例所示:
var  myArray: Array  = [ "one" , "two" , "three" ];
for  ( var  item1 in  myArray)
{
     trace (item1);
     trace (myArray[item1]);
}
for  each  ( var  item2 in  myArray)
{
     trace (item2);
}
// 输出:
// one
// two
### 如何列出 Python 类中的所有变量 在 Python 中,可以通过 `__dict__` 属性来查看类或实例的所有属性和方法。对于类来说,这包括了类变量以及任何定义的方法。需要注意的是,`__dict__` 返回的结果是一个字典形式的数据结构,其中键表示变量名或方法名,而值则是对应的对象。 以下是具体实现: #### 列出类中的所有变量 可以使用如下代码片段展示类中的所有变量(不包括继承自父类的成员)[^1]: ```python class MyClass: class_var = "I am a class variable" def __init__(self, instance_value): self.instance_var = instance_value def my_method(self): pass # 获取类的所有变量 all_variables_in_class = {key: value for key, value in MyClass.__dict__.items() if not key.startswith('__')} print(all_variables_in_class) ``` 上述代码通过过滤掉特殊方法(即以双下划线开头和结尾的方法),仅保留普通的类变量和静态方法。 #### 列出实例中的所有变量 如果想了解特定实例所拥有的全部变量,则应考虑其实例范围内的数据: ```python obj = MyClass("instance specific data") # 查看实例的所有变量 all_instance_vars = obj.__dict__ print(all_instance_vars) ``` 这里值得注意的一点是,只有那些属于该实例自身的属性才会被列出来,而不含其所属类级别的共享资源如 `class_var`. 另外,在某些情况下可能还需要关注从基类那里继承过来的内容或者动态添加到对象上的特性等问题。因此实际应用时需视具体情况调整策略[^3]. 最后提醒一点,尝试访问并打印整个 `__dict__` 可能会产生大量冗余信息特别是当涉及复杂框架的时候所以最好先做适当筛选处理再输出结果以便于阅读理解[^2].
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值