The Last Day Of Summer

.NET技术 C# ASP.net ActiveReport SICP 代码生成 报表应用 RDLC
posts - 305, comments - 1913, trackbacks - 76, articles - 3
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

菜鸟说python中的继承

Posted on 2005-03-01 21:14 Cure 阅读(890) 评论(2)  编辑 收藏 所属分类: Python

python支持面向对象的编程风格,这里主要说说python中的多继承:
下面的代码使用python2.4,安装后使用idle的IDE开发环境(说是IDE ,比起delphi,VS.net等简单得太多了)
从File-New菜单建立一个.py文件,写下面的代码:
class SuperClass:
    def sample(self):
        print 'SuperClass'
class SubClass(SuperClass):
    pass
sub = SubClass()
sub.sample()
要先保存,再按F5执行,在idle的主窗口显示:
>>> ================================ RESTART ================================
>>>
SuperClass
>>>
子类调用了父类的sample方法,现在修改代码,如下:
class SuperClass:
    def sample(self):
        print 'SuperClass'
class SuperClass1:
    def sample(self):
        print 'SuperClass1'
class SubClass(SuperClass,SuperClass1):
    pass
sub = SubClass()
sub.sample()

运行代码,看到的结果和上面的是一样的,这里子类调用的第一个父类的sample方法,第二个父类的不被调用,
现在知道下面要说什么了吧,把SubClass类的声明改成:
class SubClass(SuperClass1,SuperClass):
    pass

运行,看到的结果是SuperClass1的sample方法被调用。
>>> ================================ RESTART ================================
>>>
SuperClass1
>>>
到这里,可以看出在多继承的情况下,父类中的相同方法在子类中会调用类声明的第一个父类的方法。

Feedback

#1楼    回复  引用  查看    

2005-07-27 15:31 by 81      
这样容易引起错乱,就像.net中引入多个namespace后存在相同的类名一样,python最好能强制子类override这个方法。

#2楼    回复  引用  查看    

2005-07-27 22:36 by cure      
多继承确实很容易引起混乱,不过其优点和缺点同样明显,在<c++语言的设计和演化>中有很详细的讨论

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-03-01 21:20 编辑过


相关链接: