如果我有一个课程如下:
class myclass(object):
i = 20
j = 30
k = 40
def __init__(self):
self.myvariable = 50
Run Code Online (Sandbox Code Playgroud)
如何获得包含i,j和k的列表?(该类的静态成员)我试图使用:
[x for x in dir(a) if isinstance(getattr(a, x), (int, long))]
Run Code Online (Sandbox Code Playgroud)
然而,这也返回self.myvariable.有没有办法在实例和类类型上执行此操作?
print([ getattr(myclass,x) for x in dir(myclass) if not x.startswith("__")])
[20, 30, 40]
Run Code Online (Sandbox Code Playgroud)
要么:
print([v for k,v in myclass.__dict__.items() if not k.startswith("__")])
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用检查它的类型issinstance:
[getattr(myclass, x) for x in dir(myclass) if isinstance(getattr(myclass, x) , int)]
Run Code Online (Sandbox Code Playgroud)
使用dict:
[v for k,v in myclass.__dict__.items() if isinstance(v,int)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1287 次 |
| 最近记录: |