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

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

先看两段代码

Python 2.7.5

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

# 旧式类
class Foo():
    pass


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


# 新式类
class NewFoo(object):
    pass


new_foo = NewFoo()
print(new_foo.__class__)
print(type(new_foo))
# <class '__main__.NewFoo'>
# <class '__main__.NewFoo'>
# type(obj)则与obj.__class__相同

Python 3.6.5

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


class Foo():
pass


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

# <class '__main__.Foo'>
# <class '__main__.Foo'>

class NewFoo(object):
pass


new_foo = NewFoo()
print(new_foo.__class__)
print(type(new_foo))
# <class '__main__.NewFoo'>
# <class '__main__.NewFoo'>

小结

1111.png

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

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


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

class Foo(object):
pass


参考

Python黑魔法:元类

            </div>
目录
相关文章
|
15小时前
|
数据可视化 Python
Python 金融编程第二版(三)(4)
Python 金融编程第二版(三)
10 2
|
15小时前
|
存储 数据可视化 索引
Python 金融编程第二版(三)(3)
Python 金融编程第二版(三)
9 1
|
15小时前
|
存储 SQL 数据库
Python 金融编程第二版(四)(4)
Python 金融编程第二版(四)
8 0
|
15小时前
|
SQL 存储 数据库
Python 金融编程第二版(四)(3)
Python 金融编程第二版(四)
8 0
|
16小时前
|
存储 分布式计算 数据可视化
Python 金融编程第二版(四)(2)
Python 金融编程第二版(四)
8 0
|
Python
【Python零基础入门篇 · 23】:类的继承(单继承和多继承)、继承重写
【Python零基础入门篇 · 23】:类的继承(单继承和多继承)、继承重写
120 0
【Python零基础入门篇 · 23】:类的继承(单继承和多继承)、继承重写
|
Python 开发者 C语言
python类的继承
通过代码来显示python的继承有什么特性
2309 0
|
Python Ubuntu
python 类的继承
python 类的继承
1371 0