2005年08月11日 星期四 22:57
class Matrix(object): def __init__(self, numberOfRows, numberOfColumns): assert numberOfRows >= 0 assert numberOfColumns >= 0 super(Matrix, self).__init__() self._numberOfRows = numberOfRows self._numberOfColumns = numberOfColumns请问第五行什么意思?ps:我查过关于super的文档,但是还不大懂。 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050811/08f2a125/attachment.html
2005年08月11日 星期四 23:03
在 05-8-11,jjyoung<hellopython at 126.com> 写道: > > class Matrix(object): > > def __init__(self, numberOfRows, numberOfColumns): > assert numberOfRows >= 0 > assert numberOfColumns >= 0 > super(Matrix, self).__init__() > self._numberOfRows = numberOfRows > self._numberOfColumns = numberOfColumns > 请问第五行什么意思? > > ps: > 我查过关于super的文档,但是还不大懂。 > super是用在New Style Class中调用父类的方法的安全形式。classic class的调用是: class A: def p(self):pass class B(A): def p(self): A.p(self) #B中的处理 但是这样可能会有问题,那就是多重继续中的"钻石形状"问题(详情请参考python.org上的关于New Style class的文档),因此为了在New Style Class中解决引入了super方法,它可以安全地进行处理。因此它需要传入类名,用来帮助查找应调用的父类。 -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年08月11日 星期四 23:19
在 05-8-11,limodou<limodou at gmail.com> 写道: > 在 05-8-11,jjyoung<hellopython at 126.com> 写道: > > > > class Matrix(object): > > > > def __init__(self, numberOfRows, numberOfColumns): > > assert numberOfRows >= 0 > > assert numberOfColumns >= 0 > > super(Matrix, self).__init__() > > self._numberOfRows = numberOfRows > > self._numberOfColumns = numberOfColumns > > 请问第五行什么意思? > > > > ps: > > 我查过关于super的文档,但是还不大懂。 > > super是用在New Style Class中调用父类的方法的安全形式。classic class的调用是: > > class A: > def p(self):pass > class B(A): > def p(self): > A.p(self) > #B中的处理 > > 但是这样可能会有问题,那就是多重继续中的"钻石形状"问题(详情请参考python.org上的关于New Style > class的文档),因此为了在New Style > Class中解决引入了super方法,它可以安全地进行处理。因此它需要传入类名,用来帮助查找应调用的父类。 > 精彩!都象禅问了!哈哈哈!! 下次CPUG就讲一讲懂的 New Style Class 吧! 大家可能平时没有时间和动力来研究Python语言本身的,有研究过的就分享出来! 对比其它语言就更加明白 Pythonic 之美了! "钻石形状"问题 C++ 是通过不同父类中函式的参数类型来匹配; JAVA,C# 是根本不敢玩这个 PHP通过伪装父类实例来进行 Ada? Lisp?... -- [Time is unimportant, only life important!]
2005年08月15日 星期一 11:35
On 8/11/05, Zoom Quiet <zoom.quiet at gmail.com> wrote: > 在 05-8-11,limodou<limodou at gmail.com> 写道: > > 但是这样可能会有问题,那就是多重继续中的"钻石形状"问题(详情请参考python.org上的关于New Style > > class的文档),因此为了在New Style > > Class中解决引入了super方法,它可以安全地进行处理。因此它需要传入类名,用来帮助查找应调用的父类。 > > > 精彩!都象禅问了!哈哈哈!! > 下次CPUG就讲一讲懂的 New Style Class 吧! > 大家可能平时没有时间和动力来研究Python语言本身的,有研究过的就分享出来! > 对比其它语言就更加明白 Pythonic 之美了! > > "钻石形状"问题 > C++ 是通过不同父类中函式的参数类型来匹配; > JAVA,C# 是根本不敢玩这个 > PHP通过伪装父类实例来进行 > Ada? Lisp?... > 什么样的问题需要用多重继承/钻石形状啊?Interface? 可不可以举个例子来说 -- simple is good
2005年08月15日 星期一 11:58
> 什么样的问题需要用多重继承/钻石形状啊?Interface? 可不可以举个例子来说 > 多重继承在Python中的使用是非常多的。比如wxPython中的排序listCtrl,它是由wxListCtrl和ColumnSorterMixin两个基类生成。但钻石继承的情况我是没有见过,但作为多重继承却是必需要可以正确处理的。 在NewEdit中许多类如槽类都是多重继承的。 -- I like python! My Donews Blog: http://www.donews.net/limodou
Zeuux © 2025
京ICP备05028076号