python中定义类加不加object,加不加(),新式类,经典类

定义一个类时,不加object,称为经典类,加了object,称为新式类

注意,python3.6后,在功能上已经没有经典类和新式类的区分。都是广度优先原则。

也就是说

class A:    

等价于

class A():

等价于

class A(objejct):

 

下面一个例子 来说明调用的原则:

class A(object):
    def foo(self):
        print('called A.foo()')

class B(A):
    pass

class C(A):
    def foo(self):
        print('called C.foo()')

class D(B, C):
    pass

if __name__ == '__main__':
    d = D()
    d.foo()

以上代码,调用的过程是B-C-A  ,也就是广度优先。

如果把上面的

class A(object):

改成

class A:

或者

class A():

结果都是 一样的。

打印出:called C.foo()

再次提醒,该规律适用于python3.6(包含3.6)以后,其他版本自己去测试

更多粉丝可见文章,欢迎点击关注!

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值