chandan kumar wrote: > Hi , > > I'm new to python ,please correct me if there is any thing wrong with the > way accessing class attributes. > > Please see the below code .I have inherited confid in ExpectId class, > changed self.print_msg to Hello. Now inherited confid in TestprintmsgID > class.Now I wanted to print self.print_msg value (which is changed under > ExpectId class) as Hello under TestprintmsgID. I end up with error saying > TestprintmsgID has no attribute self.print_msg. Atleast i expect the null > to be printed. > > > > class confid(): > def __init__(self): > self.print_msg = "" > > class ExpectId(confid): > > def __init__(self): > self.print_msg = " Hello" > > def expectmethod(self): > print "self.print_mesg = ",self.print_msg > > class TestprintmsgID(confid): > > def __init__(self): > "Created Instance" > > def printmsgmethod(self): > print "printmsgmethod print_msg val = ",self.print_msg---- Here is > the Attribute error
If the class has an __init__() method the initializer of the base class is not invoked automatically. In the above code the initializer of TestprintmsgId does nothing, so you can avoid it. ExpectId.__init__() however must invoke confid.__init_(). The complete example: class confid(): def __init__(self): self.print_msg = "" class ExpectId(confid): def __init__(self): confid.__init__(self) self.print_msg = " Hello" def expectmethod(self): print "self.print_mesg = ",self.print_msg class TestprintmsgID(confid): def printmsgmethod(self): print "printmsgmethod print_msg val = ",self.print_msg Note that there is an alternative way to invoke a baseclass method using super() which works only for "newstyle classes", i. e. classes that inherit from object: class confid(object): def __init__(self): self.print_msg = "" class ExpectId(confid): def __init__(self): super(ExpectId, self).__init__() self.print_msg = " Hello" def expectmethod(self): print "self.print_mesg = ",self.print_msg class TestprintmsgID(confid): def printmsgmethod(self): print "printmsgmethod print_msg val = ",self.print_msg -- https://mail.python.org/mailman/listinfo/python-list