....a class in Python called House. It has instance variables....
A class doesn't have instance variables. The instance has
.
'variable' is a confusing word in Python.
Python doesn't offer "variables" (= boxes) to the developper, only objects.
What people confusingly call 'variables' are most of the time the identifiers (= names).... or maybe ... what... I don't know and they don't know themselves, because there are no variables at the use of the developper in Python....
.
You can't call h if it isn't a callable object (a class, a function....)
What you name 'call' is simply the demand to Python to present you the object h. As it isn't a simple object as is an integer or a string, but an instance, that is to say an object whith attributes that are data attributes and methods, Python doesn't present you extensively the instance with all its attributes and the values of the attributes (it may be long for certain instances), it presents you a short description of the instance, saying which class it is an instance of, and giving its address.
__repr__()method which is suppose to return a string representing the value of the object. If the object doesn't have a__repr__()method, but does have a__str__()method, it will use that instead. What you're seeing for a class without either is what the default method returns.h()?