Python - 面向对象编程 - 新式类和旧式类

简介: Python - 面向对象编程 - 新式类和旧式类

object


object 是 Python 为所有对象提供的父类,默认提供一些内置的属性、方法;可以使用 dir 方法查看

 

新式类


  • 以 object 为父类的类,推荐使用
  • 在 Python 3.x 中定义类时,如果没有指定父类,会默认使用 object 作为该类的父类
  • 所以 Python 3.x 中定义的类都是新式类

 

旧式类


  • 不以 object 为父类的类,不推荐使用
  • 在 Python 2.x 中定义类,如果没有指定父类,不会使用 object 作为基类

 

新式类和旧式类的区别


在多继承时,会影响到方法搜索顺序 MOR

 

重点


  • 为了保证编写的代码能够同时在 Python2.x 和 Python 3.x 中运行
  • 建议在定义类时,如果没有父类,也统一继承 object

class 类名(object):

   pass

 

Python 2.x 中声明类


旧式类

image.png

 

新式类

image.png

手动继承 object 类,拥有 object 类的属性、方法

 

Python 3.x 中声明类


默认就是新式类

class A:
    pass
a = A()
print(dir(a))
# 输出结果
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']


自动继承 object 类,拥有 object 类的属性、方法

相关文章
|
1小时前
|
Python
【Python进阶(三)】——面向对象编程
【Python进阶(三)】——面向对象编程
|
1小时前
|
C++ Python
Python中的类与对象
Python中的类与对象
6 1
|
1小时前
|
Python
【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
【5月更文挑战第6天】【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
|
1小时前
|
存储 程序员 Python
Python中自定义类实例化数组的艺术
Python中自定义类实例化数组的艺术
9 1
|
1小时前
|
程序员 Linux C++
Python中的WinForms类桌面应用程序开发
Python中的WinForms类桌面应用程序开发
24 4
|
1小时前
|
Java 开发者 索引
Python基础语法:类笔记
本篇博文是把自己在学习python类的过程中自己理解和笔记,一点一点总结的写出出来,做一个总结,加深对面向对象编程的理解。
|
1小时前
|
Python
Python中的面向对象
【5月更文挑战第4天】面向对象编程(OOP)是Python的核心,涉及类与对象、封装、继承和多态。类是对象的模板,对象则是类的实例。例如,`Person`类有`__init__`构造方法和`greet`方法。
15 3
|
1小时前
|
数据可视化 索引 Python
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
|
1小时前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
【5月更文挑战第9天】`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
27 5
|
1小时前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
11 0