python 一文教你入门洗衣机行业,啊呸,是入门面向对象

Posted Coderusher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 一文教你入门洗衣机行业,啊呸,是入门面向对象相关的知识,希望对你有一定的参考价值。

@[toc]

1. 深入理解面向对象

面向对象就是将编程当作一个事物,它对外界来说是直接可以使用的,而不需要在意内部的构造情况。这里的编程是指为事物创建一列动作。

为了方便大家理解,以洗衣服这件事情为例。

  1. 洗衣服可以有两种方式:手洗 和 机洗

对于现代人来说,手洗已经很少了,多数采用机洗的方式。因为我们可以跳过繁琐的过程,好比要把大象塞进冰箱中的思路一样——打开冰箱,放进大象,关闭冰箱。

==也就是说机洗使得洗衣服变得更加简单,而且高效!!!==

这也就衍生出为什么面向对象很重要 —— 面向对象的编程可以使得代码的整体逻辑更简洁清晰。

补充

2. 类和对象的关系

请先记住这句话:类创建对象

同样,还是洗衣机的例子。

到此,通过三个Q & A, 引出了洗衣机产生的依据——设计图纸。总结上面的过程就是:

而其实这里的制造洗衣机的设计图纸就可以比作面向对象中的, 而制造出来的洗衣机就是对象

也就是说类和对象的关系是 ==类创建对象==。而这里的创建一词其实也就是我们平常所说的实例化

3. 理解类和对象

上一小节已经介绍了类和对象的关系,接下来深入理解类和对象

3.1 类

类的定义

同样以洗衣机为例

  • 洗衣机的特征(如长宽高、颜色等)--> 类的属性(也就是类中的变量)

  • 洗衣机的行为 (如是否要脱水,是否为速洗等) --> 类的方法(也就是类中的函数)

3.2 对象

对象的定义

注意:

  1. 开发中是先有类再有对象
  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常用技术的学习路线!《入门到入土伴终生》

商业智能一文教你入门PowerBI!

SpringCloud-Alibaba系列教程14.一文教你入门RocketMQ

CAD基础入门,教你如何使用CAD看图?

老司机教你:测试0基础,如何入门?