您当前的位置: 首页 >  彭世瑜 Python

Python编程:旧式类和新式类的区别

彭世瑜 发布时间:2019-05-06 14:31:13 ,浏览量:2

先看两段代码

Python 2.7.5

# -*- coding: utf-8 -*-

# 旧式类
class Foo():
    pass


foo = Foo()
print(foo.__class__)
print(type(foo))
# __main__.Foo
# 
# obj.__class__就表示该类,但type(obj)始终是instance类型


# 新式类
class NewFoo(object):
    pass


new_foo = NewFoo()
print(new_foo.__class__)
print(type(new_foo))
# 
# 
# type(obj)则与obj.__class__相同

Python 3.6.5

# -*- coding: utf-8 -*-

class Foo():
    pass


foo = Foo()
print(foo.__class__)
print(type(foo))

# 
# 

class NewFoo(object):
    pass


new_foo = NewFoo()
print(new_foo.__class__)
print(type(new_foo))
# 
# 

小结

版本class Foo()class Foo(object)Python 2.7.5旧式类新式类Python 3.6.5新式类新式类

新式类: 类(class)和类型(type)相同 旧式类: 类(class)和类型(type)不同

所以,为了兼容py2 和 py3,最好的写法是继承object:

class Foo(object):
    pass

参考 Python黑魔法:元类

关注
打赏
1688896170
查看更多评论

彭世瑜

暂无认证

  • 2浏览

    0关注

    2727博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0533s