新式类和经典类 | 学习笔记

简介: 快速学习 新式类和经典类

开发者学堂课程【Python入门 2020年版新式类和经典类】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10389


新式类和经典类


内容简介

一、新式类和经典类

1.新式类和经典类的概念

2.区别

3.python2和 python3的区别框架图


一、新式类和经典类

#手动的指定 Student 类继承自 object

class Student(object):paas

#没有指定 dog 的父类,python3默认继承自 object

class Dog:

pass

现在定义了两个类,一个是 student,一个是 dog,这两个类后面写不写括号里的(object)都是相同的,写法是一样的。

1.    新式类和经典类的概念

(1)   新式类:继承自 object 的类我们称之为新式类

(2)   经典类:不继承自 object 的类

2.区别

1)在 python2里,如果不手动的指定一个类的父类是 object,这个类就是一个经典类。

python2和 python3还有一个最大的区别就在于中文的指使,在 python2里默认不支持中文需要写一个代码。

代码:

#-*- coding:utf8-*-   有了这个代码在 python2里就不会出现报错情况。

例:

s=Student()

d=Dog()

print dir(s)

print dir(d)

这里 dir 的作用是列数里面的内容。

python2运行结果如下图:

image.png

结果明显 student 的属性比较多,而 dog 只有俩个属性。

因为 student 继承了 object,而 dog 里没有继承,所以里面有很多属性都不能用。

2)在 python3里不存在经典类,都是新式类

s=Student()

d=Dog()

print (dir(s))

print (dir(d))

用同一个方式,在 python3里是没有区别的。

python3运行结果如下图:

image.png

建议写上(object),因为兼容性问题,假如没有 object python3里是可以的,但是放在 python2里可能会出现许多问题。

3.    python2python3的区别框架图

image.png

相关文章
|
20天前
|
算法 编译器 C语言
【C/C++ 编程题 01】用C++设计一个不能被继承的类
【C/C++ 编程题 01】用C++设计一个不能被继承的类
22 0
|
4月前
|
Java
Java面向对象编程,如何定义一个接口并在类中实现它?
Java面向对象编程,如何定义一个接口并在类中实现它?
40 1
|
4月前
|
Java
Java面向对象编程,构造函数和方法的区别是什么?
Java面向对象编程,构造函数和方法的区别是什么?
43 2
|
4月前
|
Java
Java面向对象编程,解释封装、继承和多态的概念。
Java面向对象编程,解释封装、继承和多态的概念。
39 2
|
4月前
|
算法 C++ Python
Python之经典类VS新式类和Supper
Python之经典类VS新式类和Supper
24 0
|
10月前
|
C++
C++类的学习1(二)
的定义一般包括两部分,一是类的属性,二是他所拥有的方法。类的实例化是指给类的加载并初始化过程,比如一个people类,我们具体到每一个人就是类的实例化,此外一个类可以在此类上进行扩展。比如people类,我们分为 外国people 和 中国people,那么people叫做基类,外国people叫做派生类或子类
|
10月前
|
C++
C++类的学习1(一)
的定义一般包括两部分,一是类的属性,二是他所拥有的方法。类的实例化是指给类的加载并初始化过程,比如一个people类,我们具体到每一个人就是类的实例化,此外一个类可以在此类上进行扩展。比如people类,我们分为 外国people 和 中国people,那么people叫做基类,外国people叫做派生类或子类
|
Python
Python编程:旧式类和新式类的区别
Python编程:旧式类和新式类的区别
64 0
Python编程:旧式类和新式类的区别
backtrader_源码学习_findbases函数用于发现两个类之间有多少继承的类
backtrader_源码学习_findbases函数用于发现两个类之间有多少继承的类
59 0