
一、面向对象
1.1 面向过程与面向对象
1.1.1 面向过程
怎么做
1.1.2 面向对象
谁来做
应对复杂的项目,提供固定的套路
1.2 面向对象基本概念
1.2.1 类与对象的概念
Python中对象几乎无处不在
名称 | 说明 |
---|---|
类 | 类是一群具有相同特征或者行为的事物的一个统称 三要素: 类名(满足大驼峰命名法)、属性(事物特征)和方法(事物行为) 1. 抽象的,不能直接使用 2. 负责创建对象 |
对象 | 对象是由类创建出来的一个具体的存在 1. 可以直接使用 2. 由哪一个类创建的对象就具有哪一个类中定义的属性和方法 eg: 变量、数据、函数都是对象 |
- 先有类,再有对象
类——图纸
对象——图纸制造出来的飞机
1.2.2 类与对象的关系
- 类是模板,对象是根据类这个模板创建出来的
先有类,再有对象 - 类只有一个,对象可以有很多个
- 不同对象之间的属性可能会各不相同
- 类中定义了什么属性和方法,对象就有什么属性和方法,不可能多,也不可能少
1.3 定义类
1.3.1 定义一个只含有方法的类
格式:
class 类名:
def 方法名1(self, 参数列表):
pass
def 方法名2(self, 参数列表):
pass
...
def 方法名n(self, 参数列表):
pass
- 类名符合大驼峰命名法
- 方法名使用下划线
- 方法中的第一个参数必须是self
1.3.2 创建对象
格式:
对象名 = 类名()
1.4 类的属性与self
哪一个对象调用的方法,self就是哪一个对象的引用
1.4.1 在类的外部给对象增加属性不推荐
对象名.属性名 = 'xxx'
- 程序在运行时,没有找到属性就会报错
eg:
class Cat:
def test_001(self):
print("Hello")
cat = Cat()
cat.name = '懒猫'
print(cat)
1.4.2 使用self在类的方法内部输出属性
eg:
class Cat:
def test_001(self):
print("我是%s" % self.name)
cat = Cat()
cat.name = '懒猫'
cat.test_001()
print(cat)
1.5 在类的初始化方法内部定义属性
使用类名创建对象时,Python解释器会自动执行以下操作:
- 为对象在内存中分配空间——创建对象
- 为对象的属性设置初始值——初始化方法
__init__()
__init__()
专门用来定义一个类有哪些属性的方法
eg:
- 初始化时写死属性
class Cat:
def __init__(self):
self.name = '懒猫'
def test_001(self):
print("我是%s" % self.name)
cat = Cat()
cat.test_001()
print(cat.name)
- 初始化时设置属性
推荐
class Cat:
def __init__(self, name):
self.name = name
def test_001(self):
print("我是%s" % self.name)
cat = Cat('懒猫')
cat.test_001()
print(cat.name)
1.6 内置方法
提示:
对象生命周期 描述 开始 一个对象从类名()创建,生命周期开始 结束 一个对象的 __del__
方法一旦被调用,生命周期结束
- 在对象生命周期内,可以访问对象的属性或让对象调用方法
-
__del__
方法
对象被从内存中销毁前,会被自动调用
eg:
- 程序最后自动调用
__del__
方法
class Cat:
def __init__(self, name):
self.name = name
print("%s 我来了" % self.name)
def __del__(self):
print("%s 我去了" % self.name)
def test_001(self):
print("我是%s" % self.name)
cat = Cat('懒猫')
cat.test_001()
print(cat.name)
print("-"*50)
结果:

- 直接删除一个对象并调用
__del__
方法
del
class Cat:
def __init__(self, name):
self.name = name
print("%s 我来了" % self.name)
def __del__(self):
print("%s 我去了" % self.name)
def test_001(self):
print("我是%s" % self.name)
cat = Cat('懒猫')
cat.test_001()
print(cat.name)
del cat
print("-"*50)
结果:

-
__str__
方法
返回对象的描述信息,print函数输出使用(必须返回一个字符串)
用于自定义对象变量的输出内容 - python中,使用print()输出对象变量,默认会输出对象引用的类名及创建的内存地址
eg:
class Cat:
def __init__(self, name):
self.name = name
print("%s 我来了" % self.name)
def __del__(self):
print("%s 我去了" % self.name)
def __str__(self):
return "我是%s" % self.name
cat = Cat('懒猫')
print(cat)
print("-"*50)
结果:

更新中......
网友评论