第10天:Python 类与对象

在刚接触编程时,我们就了解到编程界有两大思想:面向过程与面向对象,Python 就是一门面向对象的语言,如果你了解过面向对象的思想,自然就知道面向对象思想包含两个基本概念:类与对象 ,下面我们就一起详细学习下 Python 的类与对象吧!

1 基本概念

1.1 面向对象

面向对象是一种抽象,是一种用分类的方式看待问题的方法,用 Java 的编程思想来说就是:万物皆对象;面向对象有三大特性:封装、继承、多态。

1.2 类

上面说了面向对象是一种用分类的方式看待问题的方法,一个分类就是一个类,可以把类看作是一个抽象的模板,如:Car 类。

1.3 对象

对象是根据类创建出来的一个个实例。

2 基本使用

2.1 类的定义

# 类的定义class Car: pass

2.2 对象的创建

# 创建 Car 的实例对象 cclass Car: passc = Car()

2.3 类中定义属性

# 定义 Car 类的属性 nameclass Car: name = 'BMW'

3 类中的方法

3.1 内置方法

Python 创建任何一个类的时候,都会包含一些内置的方法,主要包括如下:

方法 说明
__init__ 构造函数,在生成对象时调用
__del__ 析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__ 按照索引赋值
__getitem__ 按照索引获取值
__len__ 获得长度
__cmp__ 比较运算
__call__ 函数调用
__add__ 加运算
__sub__ 减运算
__mul__ 乘运算
__div__ 除运算
__mod__ 求余运算
__pow__ 乘方

3.2 自定义方法

Python 有三种常见的方法,分别为:实例方法、类方法、静态方法,这三种方法都定义在类中。

3.2.1 类方法

类方法是将类本身作为对象进行操作的方法。

定义与使用

'''类方法(可调类变量、可被实例调用、可被类调用)1、类方法通过@classmethod装饰器实现,只能访问类变量,不能访问实例变量;2、通过cls参数传递当前类对象,不需要实例化。'''class Car(object): name = 'BMW' def __init__(self, name): self.name = name @classmethod def run(cls,speed): print(cls.name,speed,'行驶')# 访问方式1c = Car("宝马")c.run("100迈")# 访问方式2Car.run("100迈")
3.2.2 静态方法

静态方法是类中的函数,不需要实例。

定义与使用

'''静态方法(可调类变量、可被实例调用、可被类调用)1、用 @staticmethod 装饰的不带 self 参数的方法;2、静态方法名义上归类管理,实际中在静态方法中无法访问类和实例中的任何属性;3、调用时并不需要传递类或实例。'''class Car(object): name = 'BMW' def __init__(self, name): self.name = name @staticmethod def run(speed): print(Car.name,speed,'行驶')# 访问方式1c = Car("宝马")c.run("100迈")# 访问方式2Car.run("100迈")
3.2.3 实例方法

实例方法就是类的实例能够使用的方法。

定义与使用

# 实例方法(可调类变量、可调实例变量、可被实例调用)# 第一个参数强制为实例对象 self。class Car(object): name = 'BMW' def __init__(self, name): self.name = name def run(self,speed): print(self.name,speed,'行驶')
# 访问c = Car("宝马")c.run("100迈")

4 类的继承

定义与使用

# 基本语法:class ClassName(BaseClassName)# 父类class Car(object): name = 'BMW' def __init__(self, name): self.name = name def run(self,speed): print(self.name,speed,'行驶') # 子类class BMWCar(Car): conf = "经济适用型" pass
# 调用父类 Car 中 run 方法bc = BMWCar("BMW经济适用型轿车")bc.run("100迈")

5 类的多态

定义与使用

# 父类class Car(object): name = 'BMW' def __init__(self, name): self.name = name def run(self,speed): print('Car-->',self.name,speed,'行驶')
# 子类1class BMWCar(Car): def run(self,speed): print('BMWCar-->',self.name,speed,'行驶')
# 子类2class SVWCar(Car): def run(self,speed): print('SVWCar-->',self.name,speed,'行驶')
# 调用 run 方法c = Car("Car")c.run("120迈")
bc = BMWCar("宝马")bc.run("100迈")
sc = SVWCar("大众")sc.run("80迈")
# 输出结果'''Car--> Car 120迈 行驶BMWCar--> 宝马 100迈 行驶SVWCar--> 大众 80迈 行驶'''

在上面的例子中,我们可以看出:c、bc 、sc 是不同类型的对象,在它们调用 run 方法时,调用的均是各自类中的方法,这就是多态。

总结

本节给大家介绍了 Python 类与对象的定义和使用,对 Python 工程师提供了支撑,能够根据实际情况在项目中灵活使用不同类型的方法。

参考:https://www.readwithu.com/Article/python9/Preface.html

系列文章
(0)

相关推荐

  • 关于def __init__(self)的一些知识点

    def __init__(self)在Python里面很常见,Python中的self在Python中的类Class的代码中,常看到函数中的第一个参数,都是self.以及Class中的函数里面,访问对 ...

  • 60个Python小例子,建议收藏

    原文:https://github.com/jackzhenguo/python-small-examples 一. 数字 1 求绝对值 绝对值或复数的模 In [1]: abs(-6)Out[1]: ...

  • 你需要了解的最重要的Python概念

    https://m.toutiao.com/is/JEmD36X/ 了解有关Python语言构建模块的所有信息 > Image by author Python很容易学习. 但是,它具有某些难以 ...

  • Python类和对象

    Python 语言在设计之初,就定位为一门面向对象的编程语言,"Python 中一切皆对象"就是对 Python 这门编程语言的完美诠释. 类和对象是 Python 的重要特征,相 ...

  • 千万别说你会Python!如果不知道这10个Python包!

    世界上有超过200,000个Python程序包(这只是基于官方的Python程序包索引PyPI托管的程序包). 这就引出了一个问题:拥有这么多的软件包,每个Python程序员都需要学习哪些软件包是最重 ...

  • 类与对象的创建

    类与对象的创建 一个项目应该只有一个main方法 无论一个类多么牛逼,它也只有属性和方法 this代表当前这个类 类是抽象的(把像的东西抽出来,这一类事物共同具有的,例如:人,都有姓名,性别,会吃饭, ...

  • python类的继承

    目录 一.概述 二.类的继承 2.1 继承的定义 2.2 构造函数的继承 2.3 子类对父类方法的重写 三.类继承的事例 回到顶部 一.概述 面向对象编程 (OOP) 语言的一个主要功能就是" ...

  • 10个成语,10种Python新手错误

    本文内容整理自网络,未找到原始出处 如有侵权,请联系删除 整理:Python猫(python_cat) 大家好,欢迎来到 Crossin的编程教室 ! 在刚学习Python的时候,难免会犯一些新手错误 ...

  • python 类简述

    一个最简单的基本类如下: # -*- coding: utf-8 -*- class Sjtiqu(): def __init__(self,x): self.x=x def jibenmian(se ...

  • python - 内置对象 之 变量

    一.变量命名规划 1.命名规则 (1)命名内容只能是字母.下划线.数字 (2)名字第1字符只能是字母或下划线 (3)区分大小写 2.私有变量 (1)_xxx "单下划线" 开始的成 ...

  • 10行Python代码的词云

    什么是词云呢? 词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思. 现在 ...

  • 年薪100万的HRD,选出的10本管理类好书,受用一生

    4月23日,世界读书日. 几乎每年的这一天,小汇身边的朋友都会去书店买一大批书(因为今天有优惠活动),可更多人是想买,但不知道应该买什么书. 对于知识而言,现在人们可能更看重时间,因为如果在一本不值得 ...