I have this:
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
print i # self.i will work just fine
return 'hello world'
When I do:
>>> x = MyClass()
>>>
>>> x.f()
I get an error, as expected.
My question is:
-
Why do I get the error?
-
Why is there no namespace between the namespace of the function(or method) definition and the global namespace of the module containing the class?
-
Is there any other way to reference i inside f in this case other than using self?
print iis trying to print a global (for the module) variablei. If you want to use the member of the class you should writeself.i.selfis the only usable way.