第10天:Python 类与对象

简介: 第10天:Python 类与对象

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


1 基本概念


1.1 面向对象


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


1.2 类


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


1.3 对象


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


2 基本使用


2.1 类的定义


# 类的定义class Car:    pass


2.2 对象的创建



# 创建 Car 的实例对象 cclass Car:    pass  c = 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

目录
相关文章
|
2天前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
14 2
|
16天前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
28 3
|
2月前
|
索引 Python
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
25 1
|
2月前
|
Java C++ Python
Python基础---类
【10月更文挑战第10天】Python类的定义
27 2
|
2月前
|
设计模式 开发者 Python
Python类里引用其他类
Python类里引用其他类
30 4
WK
|
2月前
|
Python
Python类命名
在Python编程中,类命名至关重要,影响代码的可读性和维护性。建议使用大写驼峰命名法(如Employee),确保名称简洁且具描述性,避免使用内置类型名及单字母或数字开头,遵循PEP 8风格指南,保持项目内命名风格一致。
WK
21 0
|
2月前
|
程序员 开发者 Python
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
56 0
|
2月前
|
Python
Python中的类(一)
Python中的类(一)
20 0
|
2月前
|
Python
Python中的类(一)
Python中的类(一)
17 0
|
2月前
|
Python
Python中的类(二)
Python中的类(二)
18 0
下一篇
DataWorks