assume I have the following class:
class myClass():
def __init__(self, number):
self.myStr = "bla"
self.myInt = number * 3
how do I get the the attributes types? I mean I want to get the following list: ['str','int']?
I also want it to work on derived classes.
Thanks a lot :)
RHP almost has it. You want to combine the dir
, type
, and getattr
functions. A comprehension like this should be what you want:
o = myClass(1)
[type(getattr(o, name)).__name__ for name in dir(o) if name[:2] != '__' and name[-2:] != '__']
This will give you ['int', 'str']
(because myInt
sorts before myStr
in alpha-order).
Breaking it down:
getattr
looks up the name of an attribute on an object
type
gets the type of an object
__name__
on a type
gives the string name of the type
dir
lists all attributes on an object (including __dunder__
attributes)
- the
if
test in the comprehension filters out the __dunder__
attributes
Use the type() function. You can even use it to print out the variable type like this:
print(type(variable_name))