If I have a class as follows:
class myclass(object):
i = 20
j = 30
k = 40
def __init__(self):
self.myvariable = 50
How can I get the list which contains i, j and k? (static members of the class) I have tried to use the:
[x for x in dir(a) if isinstance(getattr(a, x), (int, long))]
however that also returns the self.myvariable. Is there a way to perform this on an instance aswell as a class type?
print([ getattr(myclass,x) for x in dir(myclass) if not x.startswith("__")])
[20, 30, 40]
Or:
print([v for k,v in myclass.__dict__.items() if not k.startswith("__")])
If you are trying to use check the type it is issinstance
:
[getattr(myclass, x) for x in dir(myclass) if isinstance(getattr(myclass, x) , int)]
Using dict:
[v for k,v in myclass.__dict__.items() if isinstance(v,int)]
You can also use the inspect
module:
>>> [x for x in inspect.getmembers(myclass) if not x[0].startswith('__')]
[('i', 20), ('j', 30), ('k', 40)]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With