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>
目录
相关文章
|
自然语言处理 监控 数据可视化
海拍客与瓴羊达成合作,通过智能客服系统提升员工内部服务体验
海拍客与瓴羊达成合作,通过智能客服系统提升员工内部服务体验
278 0
|
存储 供应链 前端开发
宜搭平台搭建应用的最佳实践(二)| 学习笔记
快速学习宜搭平台搭建应用的最佳实践。
宜搭平台搭建应用的最佳实践(二)| 学习笔记
阿里云配置dcoker镜像仓库
阿里云配置dcoker镜像仓库
458 0
|
数据中心
交换机的电口和光口到底是个啥东东,做网络的这个常识得懂
在网络通信中,交换机的电口和光口是关键组件。电口使用电信号和RJ45接口,适用于短距离传输,成本低,安装简单;光口使用光信号和光纤线缆,适用于长距离、高速传输,抗干扰能力强,但成本较高。本文详细介绍了电口和光口的工作原理、特点、应用场景及选择方法,帮助读者更好地理解和应用这两种接口。
1825 5
|
NoSQL Java Redis
Redis 从入门到精通之Redis数据排序
Redis支持对List、Set和Sorted Set元素进行排序,排序命令是`SORT`。`SORT`命令可以根据指定的排序规则对列表、集合或有序集合的元素进行排序,并返回排序后的元素列表或子集。使用Jedis和RedisTemplate分别实现Redis列表、集合和有序集合排序操作的示例代码
1981 90
|
JavaScript 小程序 Java
基于微信小程序餐厅点餐系统设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序餐厅点餐系统设计与实现(源码+lw+部署文档+讲解等)
1685 1
|
Web App开发 iOS开发
怎样给边框添加阴影?CSS3属性box-shadow帮你搞定!
CSS3 给边框添加阴影 -- box-shadow属性
2823 1
怎样给边框添加阴影?CSS3属性box-shadow帮你搞定!
|
API
ISO 8601表示法的日期时间格式化
ISO 8601表示法的日期时间格式化
739 0
|
存储 缓存 算法
PolarDB-PG开源核心Feature介绍
作者:康俊彬(博士)
1782 0
PolarDB-PG开源核心Feature介绍
|
前端开发 JavaScript 测试技术
接口测试平台代码实现番外:主页改版-6
本节我们来实现下那三个饼形图的后台逻辑,不过我这里只做其中一个的,其他俩个留着日后再用。 也就是用户的 资源占平台总的比。资源暂时定为项目数比 接口数比 用例数 。 这里大家可以自行设计,本教程只演示如何实现这个流程。
接口测试平台代码实现番外:主页改版-6