首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

相干访问父类的实例成员

2013-10-13 
有关访问父类的实例成员我写了下列代码 3 class First(object):4aa class5def __init__(self):6self.a

有关访问父类的实例成员
我写了下列代码

 3 class First(object):
  4     aa = "class"
  5     def __init__(self):
  6         self.aa = 3
  7         print 'This is First init'
  8 
  9 
 10 class Third(First):
 11     def __init__(self):
 12         self.aa = 4
 13         First.__init__(self)
 14         print "This is Third init"
 15     def show(self):
 16         print self.aa
 17         print First.aa
 18 th = Third()
 19 th.show()

print First.aa 打印的是子类的类成员,有没有办法,打印父类的实例成员吗?
如果可以,得怎么写? python?父实?实例成员?
[解决办法]
试一下
print First().aa
[解决办法]
需要实例化,调用__init__才行,可以First().aa调用
[解决办法]
First是类对象,First.aa打印的是类对象的属性。
First是实例对象,Self.aa是存在于实例对象中的,所以要First().aa来访问
[解决办法]
引用:
我试了下,好象类成员同名的,父类与子类是同一个!

是这样子的,父类和子类中变量同名,值就会产生改写,或者父类改写子类,或者子类改写父类.

...
class Third(First):
     def __init__(self):
        self.aa = 4
        First.__init__(self)    #这块是父类改写子类的aa     
        print "This is Third init"
     def show(self):
         print self.aa#打印出来的是父类的值self.aa=3
         print First.aa
th = Third()#子类对象
th.show()

Python是解释语言,无法预判类型,就无法对类对象进行强制转换,所以不能将子类的对象转换父类访问其变量和函数。Ptyhon中子类中的同名数据只有一份,(要么是父类的,要么是子类的),所以构造子类对象访问的数据要么是父类的,要么就是子类本身的。
[解决办法]
由于执行了 First.__init__(self),所以,self.aa 就赋值了,子类同时继承了这个值
你运行下面这段看看,我把 First.__init__(self) 注释了

class First(object):
    aa = "class"

    def __init__(self):
        self.aa = 3
        print 'This is First init'


class Third(First):
    def __init__(self):
        self.aa = 4
        # First.__init__(self)
        print "This is Third init"

    def show(self):
        print self.aa
        print First.aa
        print First().aa
th = Third()
th.show()

热点排行