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

  1. 深入理解面向对象

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

为了让你更容易理解,以洗衣店为例。

[En]

In order to make it easier for you to understand, take laundry as an example.

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

⼿手洗:找盆 – 放⽔水 – 加洗⾐衣粉 – 浸泡 – 搓洗 – 拧⼲干⽔水 – 倒⽔水 – 漂洗N次 – 拧⼲干 – 晾晒。

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

机洗:打开洗⾐衣机 – 放⾐衣服 – 加洗⾐衣粉 – 按下开始按钮 – 晾晒。

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

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

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

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

这就是面向对象很重要的原因–面向对象编程可以使代码的整体逻辑更加简洁和清晰。

[En]

This leads to why object-oriented is important-object-oriented programming can make the overall logic of the code more concise and clear.

补充

Q: python 面向对象相较于Java, C++ 等更加彻底,为什么?

A: 因为我们所创建的一系列 list、str、dict、tuple等数据类型 都继承自 object,而 object 又继承自 type ,type又是自己的实例。简而言之:type 是起点,它制造了自己,然后制造了object这个对象,object对象和 type 产生了变量。

python 一文教你入门洗衣机行业,啊呸,是入门面向对象
  1. 类和对象的关系

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

同样,这也是洗衣机的一个例子。

[En]

Again, it’s an example of a washing machine.

Q1: 你们家的洗衣机怎么来的? A1 : 商场买来的。

Q2 :商场中的洗衣机哪儿来的? A2: 工厂制造的。

Q3: 工厂为什么会造洗衣机? A3:因为有设计图纸。

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

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

设计图纸 ——> 洗衣机 ——> 洗衣服

事实上,这里的洗衣机设计图可以比作面向对象的类,而洗衣机就是对象。

[En]

In fact, the design drawings of the washing machine here can be compared to the object-oriented class, and the washing machine is the object.

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

  1. 理解类和对象

在上一节中介绍了类和对象之间的关系,然后深入了解了类和对象

[En]

The relationship between classes and objects has been introduced in the previous section, followed by an in-depth understanding of classes and objects

3.1 类

类的定义

类是对一系列具有相同特征和行为的事务的统称,是一个抽象的概念,不是真实存在的事物

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

同样以洗衣机为例

  • 洗衣机的特性(如长度、宽度、高度、颜色等)–>类的属性(即类中的变量)
    [En]

    characteristics of the washing machine (such as length, width, height, color, etc.)– > properties of the class (that is, variables in the class)*

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

3.2 对象

对象的定义

对象是类创建出来的真实存在的事物

注意:

  1. 开发中是先有类再有对象
  2. 对象是真实存在的,而类并不是真实存在的

4.面向对象实现方法

4.1 定义一个类

如果您对前面的图纸有透彻的了解,现在就可以开始洗衣机图纸的设计了。

[En]

If you have a thorough understanding of the previous one, you can start the design of the washing machine drawings now.

python中类分为: 经典类 和 新式类

  • 语法
class 类名():
​   代码

注意: 类名要满足标识符命名规则,同时遵循==大驼峰命名法==

4.2 创建对象

对象又称是

  • 语法
对象名 = 类名()

4.3 类之初体验

1. 定义洗衣机类
class Washer():
    def wash(self):
        print("我是洗衣机")

2. 创建对象/实例化对象
Haier = Washer()

3. 验证成果
3.1 打印 haier对象
print(Haier)  # 打印出了内存地址

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)   #
Haier.wash()  #

你可以看到这两个打印的地址是一样的。

[En]

You can see that the two printed addresses are the same.

结论:打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象

4.4 一个类创建多个对象

我们知道,一张图纸可以用来制造很多洗衣机,当工厂拿到图纸时,就可以批量生产。

[En]

We know that a drawing can be used to make a lot of washing machines, and when the factory gets the drawing, it can be mass produced.

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

同样,我们的类可以创建一对对象。

[En]

In the same way, our class can create a pair of objects.

class Washer():
    def wash(self):
        print(self)

创建海尔洗衣机01号
Haier01 = Washer()
Haier01.wash()  #

创建海尔洗衣机02号
Haier02 = Washer()
Haier02.wash()  #

可以看到,不同对象的地址是不一样的,而且打印出的 self 的地址也在改变(因为 self 永远指向调用该方法(函数)的对象)。

  1. 添加和获取对象属性

如前所述,属性是特征,如洗衣机的宽度、高度、颜色等,而对象属性不仅可以在类外获得,也可以在类内获得。

[En]

As mentioned earlier, attributes are features, such as the width, height, color of the washing machine, etc., while object properties can be obtained not only outside the class, but also within the class.

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

5.1 添加对象属性

您如何理解添加对象特性?

[En]

How do you understand adding object properties?

​ > 当你买到洗衣机,既定的高度++- 、颜色等属性一方面由工人按照图纸制造出来;另一方面也可以按照自己的意愿进行涂色等修改(虽然大家不会那样做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 获取对象属性

您如何理解获取对象属性?

[En]

How do you understand getting object properties?

洗衣机的高度、颜色等特征信息既体现在图纸中,页可以自己测量所得

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
  1. 魔法方法

所谓魔法方法,也称为魔法函数(Magic Methods),是Python的一种高级语法,允许你在类中自定义函数(函数名格式一般为__xx__),并绑定到类的特殊方法中。比如在类A中自定义__str__()函数,则在调用str(A())时,会自动调用__str__( ) 函数,并返回相应的结果。

一言以蔽之, xx 叫做魔法方法,指的是 具有特殊功能的函数。

6.1 魔法方法一览

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

6.2 魔法方法初识

神奇的方法实际上相当于洗衣机的固有属性,这些属性是在生产过程中给出的,类似于洗衣机手册中描述的各种模式。

[En]

The magic method is actually equivalent to the inherent properties of the washing machine, which are given in the production process, analogous to the various modes described in the washing machine manual.

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

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 ( )

当print输出对象的时候,默认打印对象的 内存地址。而如果类中定义了 str 方法,那么就会打印从这个方法中 return的数据。

举个栗子:

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 ( )

当删除对象时候,python解释器默认调用 del( ) 方法

同样的,举个栗子:

class Washer():
    def __init__(self, width):
        self.width = width

    def __del__(self):
        print(f"{self}这个对象已经删除!")

Haier = Washer(400)
del Haier  # 这个对象已经删除!

好啦,本次关于python中面向对象的知识就先介绍到这儿了,还会持续更新~

Original: https://blog.51cto.com/coderusher/5580042
Author: Coderusher
Title: python 一文教你入门洗衣机行业,啊呸,是入门面向对象

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/500735/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球