python 一文教你入门洗衣机行业,啊呸,是入门面向对象
Posted Coderusher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 一文教你入门洗衣机行业,啊呸,是入门面向对象相关的知识,希望对你有一定的参考价值。
@[toc]
1. 深入理解面向对象
面向对象就是将编程当作一个事物,它对外界来说是直接可以使用的,而不需要在意内部的构造情况。这里的编程是指为事物创建一列动作。
为了方便大家理解,以洗衣服这件事情为例。
- 洗衣服可以有两种方式:手洗 和 机洗
对于现代人来说,手洗已经很少了,多数采用机洗的方式。因为我们可以跳过繁琐的过程,好比要把大象塞进冰箱中的思路一样——打开冰箱,放进大象,关闭冰箱。
==也就是说机洗使得洗衣服变得更加简单,而且高效!!!==
这也就衍生出为什么面向对象很重要 —— 面向对象的编程可以使得代码的整体逻辑更简洁清晰。
补充
2. 类和对象的关系
请先记住这句话:类创建对象
同样,还是洗衣机的例子。
到此,通过三个Q & A, 引出了洗衣机产生的依据——设计图纸。总结上面的过程就是:
而其实这里的制造洗衣机的设计图纸就可以比作面向对象中的类, 而制造出来的洗衣机就是对象。
也就是说类和对象的关系是 ==类创建对象==。而这里的创建一词其实也就是我们平常所说的实例化。
3. 理解类和对象
上一小节已经介绍了类和对象的关系,接下来深入理解类和对象
3.1 类
类的定义
同样以洗衣机为例
-
洗衣机的特征(如长宽高、颜色等)--> 类的属性(也就是类中的变量)
- 洗衣机的行为 (如是否要脱水,是否为速洗等) --> 类的方法(也就是类中的函数)
3.2 对象
对象的定义
注意:
- 开发中是先有类再有对象
- 对象是真实存在的,而类并不是真实存在的
4.面向对象实现方法
4.1 定义一个类
如果对前面理解透彻的话,那么现在就可以开始洗衣机图纸的设计了。
python中类分为: 经典类 和 新式类
- 语法
class 类名():
代码
注意: 类名要满足标识符命名规则,同时遵循==大驼峰命名法==
4.2 创建对象
对象又称是
- 语法
对象名 = 类名()
4.3 类之初体验
# 1. 定义洗衣机类
class Washer():
def wash(self):
print("我是洗衣机")
# 2. 创建对象/实例化对象
Haier = Washer()
# 3. 验证成果
# 3.1 打印 haier对象
print(Haier) # 打印出了内存地址 <__main__.Washer object at 0x000001A8C23FAF40>
# 3.2 使用wash功能 -- 实例方法/对象芳芳 --对项目.wahs()
print(Haier.wash()) # 打印出了 "我是洗衣机"
4.3 self 介绍
上面的代码中是不是出现了一个self, 其实self 指的是调用该函数的对象,在上列中可以理解为haier这个实例对象。
为什么可以这么说的,因为haier对象的地址和self地址是相同的,不信?见代码。
class Washer():
def wash(self):
print(self)
Haier = Washer()
print(Haier) # <__main__.Washer object at 0x000001A8C23EBE80>
Haier.wash() # <__main__.Washer object at 0x000001A8C23EBE80>
可以看到二者打印的地址是相同的
4.4 一个类创建多个对象
我们知道,一张图纸是可以用来制造非常多的洗衣机的,当工厂拿到图纸以后就可以批量生产了。
同理,我们的类也一样,可以创建对个对象。
class Washer():
def wash(self):
print(self)
# 创建海尔洗衣机01号
Haier01 = Washer()
Haier01.wash() # <__main__.Washer object at 0x000001A8C23EBE80>
# 创建海尔洗衣机02号
Haier02 = Washer()
Haier02.wash() # <__main__.Washer object at 0x000001A8C23EB310>
可以看到,不同对象的地址是不一样的,而且打印出的 self 的地址也在改变(因为 self 永远指向调用该方法(函数)的对象)。
5. 添加和获取对象属性
前面已经提到:属性就是特征,比如洗衣机的宽度、高度、颜色等,而对象属性既可以在类外面获取,也能在类里面添加和获取
5.1 添加对象属性
如何理解添加对象属性呢?
> 当你买到洗衣机,既定的高度++- 、颜色等属性一方面由工人按照图纸制造出来;另一方面也可以按照自己的意愿进行涂色等修改(虽然大家不会那样做QAQ)。
5.1.1 类外面添加对象属性
- 语法
对象名.属性名 = 值
- 体验
Haier01.width = 500 # 修改宽度 Haier01.height = 800 # 修改高度
5.1.2 类外面获取对象属性
-
语法
对象名.属性名
- 体验
print(f"Haier01洗衣机的宽度是Haier.width") print(f"Haier01洗衣机的高度是Haier.height")
5.2 获取对象属性
如何理解获取对象属性呢?
5.2.1 类里面获取对象属性
- 语法
self.属性名
- 体验
class Washer():
def get_info(self):
print(f"洗衣机宽度为self.width")
print(f"洗衣机的高度为self.height")
Haier = Washer()
Haier.width = 300
Haier.height = 400
Haier.get_info() # 洗衣机宽度为300 洗衣机的高度为400
6. 魔法方法
一言以蔽之, xx 叫做魔法方法,指的是具有特殊功能的函数。
6.1 魔法方法一览
6.2 魔法方法初识
魔法方法其实就相当于洗衣机中与生俱来的属性,在生产过程中赋予了这些属性,类比于洗衣机说明书中介绍的各种模式。
6.2.1 init( )
init ( ) 方法的作用:初始化对象
class Washer():
# 定义 __init__, 添加实例属性
def __init__(self, width, color, height):
# 添加实例属性
self.color = "white"
self.width = width
self.height = height
def get_color(self):
# 在类中调用实例属性
print(f"洗衣机颜色为:self.color")
def get_shape(self):
print(f"洗衣机的宽度为:self.width, 高度为:self.height")
Haier01 = Washer() # 实例化一个洗衣机对象(不传参数)
Haier01.get_color() # 洗衣机颜色为:white
Haier02 = Washer(width=300, height=400) # 传入参数
Haier02.get_shape() # 洗衣机的宽度为:300, 洗衣机的宽度为:400
注意:
-
init( )方法,在创建对象时默认自动调用
- init(self) 中的 self 参数,不需要开发者传递, python解释器会自动把当前对象引用传递过去
6.2.2 str( )
举个栗子:
class Washer():
def __init__(self, width):
self.width = width
def __str__(self):
return "产品使用说明书"
Haier = Washer(400)
print(Haier) # 产品使用说明书
可以看到最终打印的结果并非 width属性,而是返回了 _str下的文字, str ( ) 方法中的文字多为类的介绍
6.2.3 del( )
同样的,举个栗子:
class Washer():
def __init__(self, width):
self.width = width
def __del__(self):
print(f"self这个对象已经删除!")
Haier = Washer(400)
del Haier # <__main__.Washer object at 0x000001A8C23EB5E0>这个对象已经删除!
好啦,本次关于python中面向对象的知识就先介绍到这儿了,还会持续更新~
以上是关于python 一文教你入门洗衣机行业,啊呸,是入门面向对象的主要内容,如果未能解决你的问题,请参考以下文章
学Python不会Matplotlib是什么?一文教你入门Matplotlib
学习过程不迷茫,一文教你理清python常用技术的学习路线!《入门到入土伴终生》