Tim Johnson schrieb: > The following code snippet is meant to test inheritance: > class test: > def __init__(self,v): > self.__val = v > def val(self): > print self.__val > class sub(test): > def __init__(self): > val() > The following console session has an error: >
Beware test.__val is a 'private' attribute. See http://www.python.org/doc/current/tut/node11.html#SECTION0011600000000000000000 for an explanation. >>>>T = mylib.test('hello') >>>>s = mylib.sub() > > Traceback (most recent call last): > File "<stdin>", line 1, in ? > File "mylib.py", line 1612, in __init__ > val() > NameError: global name 'val' is not defined > > ## what do I need to do to make the 'test method visible > ## class 'sub? Surely you mean the 'val' method (see the traceback)? it lives in the namespace of the class 'test'. So if you want to call it as a class method: >>> test.val(instance) if you want to call it as an instance method: >>> instance = sub() >>> instance.val() resp. in the class and sub-classes itself: >>> self.val() HTH, Chris _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor