面向对象编程(Object-Oriented Programming,简称OOP)是一种通过组织对象来设计程序的编程方法。
Python天生就是面向对象的模块化编程。
一、初识类与对象
/-------> BYD E6(京A.88888) 实例,对象
车(类)
\-------> BMW X5(京B.00000) 实例(对象)
/-------> 小京巴(户籍号:000001)
狗(类)
\-------> 导盲犬(户籍号:000002)
/-------> 100 (对象)
int(类)
\-------> 200 (对象)
1、类(class)
1.1 概念
类是对一类对象的抽象,是对象的模板或蓝图。它定义了对象的属性(特征)和方 法(功能)
1.2 创建
数据成员:表明事物的特征。 相当于变量
方法成员:表明事物的功能。 相当于函数
通过class
关键字定义类。
#类的创建语句语法:
class 类名 (继承列表):
实例属性(类内的变量) 定义
实例方法(类内的函数method) 定义
类变量(class variable) 定义
类方法(@classmethod) 定义
静态方法(@staticmethod) 定义
类名就是标识符,(通常约定首字母大写)
类名实质上就是变量,它绑定一个类
self 代表类实例化的对象本身
2、对象(object)
2.1 概念
对象是类的实例化,是类的实际数据存储,具有类所定义的属性和方法
2.2 创建
构造函数调用表达式
变量 = 类名([参数])
变量存储的是实例化后的对象地址
类参数按照初始化方法的形参传递(初始化:__init__)
对象是类的实例,具有类定义的属性和方法
通过调用类的构造函数来创建对象
每个对象有自己的状态,但共享方法
二、类的属性和方法
类的属性和方法是类的核心组成部分,它们用于定义类的状态和行为
1、实例属性
每个实例有自己的变量,称为实例变量(也叫属性)
实例.属性名
2、实例方法
class 类名(继承列表):
def 实例方法名(self, 参数1, 参数2, ……,):
"""注释方法""" #可省略
语句块
实例方法就是函数,至少有一个指向实例对象的形参self
实例.实例方法名(调用传参)
# 或
类名.实例方法名(实例, 调用传参)
简单示例
3、类属性
类属性是类的属性,此属性属于类,不属于此类的实例
作用:通常用来存储该类创建的对象的共有属性
类属性说明:类属性,可以通过该类直接访问
类属性,可以通过类的实例直接访问
4、类方法
类方法是用于描述类的行为的方法,类方法属于类,不属于该类创建的对象
类方法需要使用@classmethod装饰器定义
类方法至少有一个形参用于绑定类,约定为 cls
类和该类的实例都可以调用类方法
类方法不能访问此类创建的对象的实例属性
5、静态方法
静态方法定义在类的内部,作用域是类内部
使用@staticmethod装饰器定义
不需要self和cls参数
通过类或类实例调用
可以访问类属性,不能访问实例属性
6、魔术方法
魔术方法是一种特殊的方法,用双下划线包裹,例如__init__
,__str_
等。
这些方法允许您自定义类的行为,以便与内置Python功能(如+运算符、迭代、字符串 表示等)交互。
常用方法:
__init__(self, ...)
: 初始化对象,通常用于设置对象的属性。
__str__(self)
: 定义对象的字符串表示形式,可通过str(object)
或 print(object)
调用。例如,您可以返回一个字符串,描述对象的属性。
__repr__(self)
: 定义对象的“官方”字符串表示形式,通常用于调试。 可通过repr(object)
调用。
__len__(self)
: 定义对象的长度,可通过len(object)
调用。通常在自定义容 器类中使用。
__getitem__(self, key)
: 定义对象的索引操作,使对象可被像列表或字典一 样索引。例如,object[key]
。
__setitem__(self, key, value)
: 定义对象的赋值操作,使对象可像列表或字 典一样赋值。例如,object[key] = value
。
__delitem__(self, key)
: 定义对象的删除操作,使对象可像列表或字典一样 删除元素。例如,del object[key]
。
__iter__(self)
: 定义迭代器,使对象可迭代,可用于for
循环。
__next__(self)
: 定义迭代器的下一个元素,通常与__iter__
一起使用。 __add__(self, other)
: 定义对象相加的行为,使对象可以使用+
运算符相加。 例如,object1 + object2
。
__sub__(self, other)
: 定义对象相减的行为,使对象可以使用-
运算符相减。
__eq__(self, other)
: 定义对象相等性的行为,使对象可以使用==
运算符比较
__lt__(self, other)
: 定义对象小于其他对象的行为,使对象可以使用<
运算 符比较。
__gt__(self, other)
: 定义对象大于其他对象的行为,使对象可以使用>
运算 符比较。
__call__(self, other)
是一个特殊的方法(也称为“魔法方法”),它允许一个 对象像函数一样被调用。