- 1.理解面向对象
- 2.1理解类和对象
2.1.1类
2.1.2对象 - 2.2面向对象实现方法
2.2.1 定义类
2.2.2 创建对象
2.2.3 self
2.3.4 一个类创建多个对象 - 3.添加和获取对象属性
3.1类外面添加对象属性
3.2类外面获取对象属性
3.3类里面获取对象属性 - 4.具体方法
4.1 init() 方法
4.2 带参数的init代码书写
4.3 str__方法
4.4__del()方法
1、理解面向对象
面向对象是一种抽象化的编程思想,很多编程语言中都有的一种思想。
面向对象就是将编程当成是一个事物,对外界来说,事物是直接使用的,不用去管他内部的情况。
而编程就是设置事物能够做什么事。
2.1 理解类和对象
===》 二者关系:用类创建(实例化)一个对象
2.1.1类
类是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物。
特征即是属性(变量) 行为即是方法(函数)
2.1.2对象
对象是类创建出来的真是存在的事物~~先有类,后有对象
2.2面向对象实现方法
2.2.1定义类
定义类语法: class 类名():
# 1.定义洗衣机的类
class Washer():
def wash(self):
print("能洗衣服")
2.2.2创建对象
创建对象语法: 对象名 =类名()
haier = Washer()
调用实例方法/对象方法 语法: 对象名.实例方法()
haier.wash()
# 需求:洗衣机 功能:洗衣服
# 1.定义洗衣机的类
class Washer():
def wash(self):
print("能洗衣服")
# 2.创建对象
# 对象名 = 类名()
haier = Washer()
# 3.验证功能
# 打印海尔对象
print(haier)
#使用wash的功能--实例方法/对象方法
### 调用实例方法/对象方法 对象名.wash()
haier.wash()
结果展示:
print(haier)
haier.wash()
2.2.3self
self指的是调用该函数的对象。
由于打印对象和打印self得到的内存地址是一样的,self指的是调用该函数的对象
# --coding:utf-8--
class Washer():
def wash(self):
print("我洗衣服")
print(self)
haier = Washer()
print(haier) ##打印haier的内存地址
haier.wash()
#由于打印对象和打印self得到的内存地址是一样的,self指的是调用该函数的对象
结果展示:
print(haier)
2.3.4 一个类创建多个对象
- 一个类是否能创建多个对象?
同一个类创建对象:haier1 和haier2
- 多个对象都调用函数时,self地址是否相同?
这两个对象的内存地址是不一样的 ==》两个类
# --coding:utf-8--
# 1.一个类是否能创建多个对象?
# 同一个类创建对象:haier1 和haier2
class Washer:
def wash(self):
print("洗衣服")
print(self)
print("haier1:")
haier1 = Washer()
haier1.wash()
# 2. 多个对象都调用函数时,self地址是否相同? self地址不同
# 这两个对象的内存地址是不一样的 ==》两个类
print("haier2:")
haier2 = Washer()
haier2.wash()
结果展示:
print("haier1:")
haier1 = Washer()
haier1.wash()
print("haier2:")
haier2 = Washer()
haier2.wash()
3.类外面添加对象属性
属性即是特征,比如︰洗衣机的宽度、高度、重量...
对象属性既可以在类外面添加和获取,也能在类里面添加和获取。
3.1类外面添加对象属性
添加对象属性语法: 对象名.属性名 = 值
haier1.width=500
haier1.height=800
# --coding:utf-8--
class Washer:
def wash(self):
print("洗衣服")
print(self)
haier1 = Washer()
#对象属性 = 对象名.属性名 = 值
haier1.width=500
haier1.height=800
print(haier1.width)
print(haier1.height)
3.2类外面获取对象属性
获取对象属性语法: 对象名.属性名
print(haier1.width)
print(haier1.height)
结果展示:
3.3类里面获取对象属性
获取对象属性语法: self.属性
print(f'洗衣机的宽度是{self.width}')
print(f'洗衣机的宽度是{self.height}')
# --coding:utf-8--
#定义类
class Washer:
def wash(self):
print("洗衣服")
#类里面获取实例属性
def print_info(self):
#self.属性名
print(f'洗衣机的宽度是{self.width}')
print(f'洗衣机的宽度是{self.height}')
#创建对象
haier1 = Washer()
#添加实例属性
#对象属性 = 对象名.属性名 = 值
haier1.width=500
haier1.height=800
#对象调用实例方法 = 对象名.实例方法
haier1.print_info()
4.具体方法
4.1__init__()方法
__init__()方法作用:初始化对象
__init__()方法, 在创建—个对象时默认被调用,不需要手动调用
__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。
# --coding:utf-8--
#1.定义类
#1.1 定义_init_,添加实例属性~宽度+高度
#1.2 添加实例方法,访问init方法的属性
#2. 创建对象
#3. 调用实例方法 ,打印init方法里面的实例属性值
#定义类
class Washer:
#1.定义_init_,添加实例属性~宽度+高度
def __init__(self):
self.width=400
self.height=900
#1.2 定义实例方法print_info,访问init方法的实例属性
def print_info(self):
#类里面调用实例属性
print(f"洗衣机的高度是{self.height},宽度是{self.width}")
#2.创建对象
haier = Washer()
#3. 调用实例方法 ,打印init方法里面的实例属性值
haier.print_info()
结果展示:
4.2带参数的init代码书写
思考:一个类可以创建多个对象,如何对不同的对象设置不同的初始化属性呢?
答∶传参数。
def __init__(self,width,height):
self.width = width
self.height = height
# --coding:utf-8--
class Washer:
#1.定义_init_,width,height 为形参
def __init__(self,width,height):
self.width = width
self.height = height
#1.2 定义实例方法print_info,访问init方法的实例属性
def print_info(self):
#类里面调用实例属性
print(f"洗衣机的高度是{self.height},宽度是{self.width}")
#2.创建对象
haier1 = Washer(10,20)
#3. 调用实例方法 ,打印init方法里面的实例属性值
haier1.print_info()
haier2 = Washer(900,1000)
haier2.print_info()
结果展示:
4.3__str__方法
当使用print输出对象的时候,默认打印对象的内存地址。
如果类定义了_str_方法,那么就会打印从在这个方法中return的数据。
# 定义__str__()方法
def __str__(self):
return '这是海尔洗衣机的说明书'
#return :解释说明,返回的是类的说明或者对象状态的说明
# --coding:utf-8--
class Washer:
def __init__(self,width,height):
self.width = width
self.height = height
# 定义__str__()方法
def __str__(self):
return '这是海尔洗衣机的说明书'
#return :解释说明,返回的是类的说明或者对象状态的说明
#2.创建对象
haier1 = Washer(10,20)
#这是海尔洗衣机的说明书
print(haier1)
结果展示:
4.4 del()方法
当删除对象时,python解释器也会默认调用_del__()方法。
# 定义__del__()方法
def __del__(self):
print("对象已经删除")
# --coding:utf-8--
# --coding:utf-8--
class Washer:
def __init__(self):
self.width=500
# 定义__del__()方法
def __del__(self):
print("对象已经删除")
haier = Washer()
结果展示: