Accessing class attribute
Peter Otten
__peter__ at web.de
Thu Sep 12 02:45:21 EDT 2013
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
More information about the Python-list
mailing list