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

147 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

1. 新式类与旧式类(经典)类

object是Python为所有对象提供的基类,提供有一些内置的属性和方法,可以使用dir函数查看

  • 新式类:以object为基类的类,推荐使用
  • 经典类:不以object为基类的类,在开发时不推荐使用 在Python3.x中定义类时,如果没有指定父类,会默认使用object作为该类的基类--Python3.x中定义的类都是新式类

在Python2.x中定义类时,如果没有指定父类,则不会以object作为基础

新式类和旧式类在多继承时会影响到方法的搜索顺序

  • 为了保证编写的代码能够同时在Python2.x和Python3.x运行
  • 今后在定义类时,如果没有父类,建议统一继承自object 代码演示如下所示:在ipython中输入如下代码,查看新式类创建出的对象,默认包含的属性和方法
In [1]: class A(object):
   ...:     pass
   ...:


In [2]: a = A()

In [3]: dir(a)

运行结果如下图所示:通过运行结果可以看出由新式类创建出的对象,有很多属性和方法。

image.png

2. 术语-实例

  1. 使用面向对象开发,第一步是设计类
  2. 使用类名()创建对象,创建对象的动作有两部:
    • 在内存中为对象分配空间
    • 调用初始化方法__init__为对象初始化
  3. 对象创建后,内存中就忧乐一个对象的实实在在的存在--实例(实实在在存在的例子) 因此,通常会把:
  4. 创建出来的对象叫做类的实例
  5. 创建对象的动作叫做实例化
  6. 对象的属性叫做实例属性
  7. 对象调用的方法叫做实例方法 总而言之:
  • 每一个对象都有自己独立的内存空间,保存各自不同的属性
  • 一个类创建出多个对象,多个对象的方法,在内存中只有一份,在调用方法时,需要把对象的引用传递到方法内部(传递给这个方法的第一个参数就可以)