Old-style and New-style Class的区别,还是很耐人寻味的

Python/PHP/Perl 开发与设计
回复
Neptune
帖子: 13
注册时间: 2006-08-02 23:33
送出感谢: 0
接收感谢: 0

Old-style and New-style Class的区别,还是很耐人寻味的

#1

帖子 Neptune » 2007-01-17 21:13

##### Old-style and New-style Class ---Old-style:不继承object + __metaclass__==types.ClassType(type的一个子类); New-style:继承object + __metaclass__==type
# 最根本的区别I:是否继承object。old style将在python3被new style完全代替;new style,直接间接继承object的类,继承builtin类型的类,甚至builtin类型本身也可以看作new style,因为builtin类型全部继承object
# 最根本的区别II: metaclass一个是内建对象type.type(也是所有python内建类型的元类),一个是 types.ClassType(有趣的是types.ClassType本身也是个new-style class,还是个metaclass)
# I II都是必要条件,如果继承object但是metaclass指定了type的子类,则两者都不是,但是与New-style Class几乎一样;如果不继承object但是metaclass是type也是有可能的,两者也都不是
#
回复

回到 “Python/Php/Perl”