-  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()
结果展示:
 










