对象是面向对象编程的两个核心概念。

0x01:类

类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用

  • 特征其实就是一个变量,在类里我们称之为属性。
  • 行为其实就是一个函数,在类里我们称之为方法。
  • 类其实就是由属性方法组成的一个抽象概念。

例如:你在窗外看到一只鸟,这个鸟就是“鸟类”的一个实例。鸟类是一个非常通用(抽象)的类,你看到的鸟可能属于子类云雀,你可以 将“鸟类” 视为所有鸟的集合,而云雀是其中的一个子集。一个类的对象为另一个类的对象的子集时,前者就是后者的子类。
所以说 ” 云雀“ 是鸟类的子类。 而 鸟类 是云雀的超类

类就相当于制造飞机时的图纸,是一个模板。这个模板只规定了飞机的某些特征(例如大小,颜色,型号等等)和行为(例如起飞,降落,飞行等等),它并不是一个具体的飞机,而是对飞机的一个抽象概念。它出现的目的,是为了让我们的创建飞机对象。

image.png

0x02:对象

对象是由类创建出来的一个具体存在,可以直接使用。由哪一个类创建出来的 对象,就拥有在哪一个类中定义的属性和方法。对象就相当于用图纸制造的飞机。在开发中,应该先有类,在类里定义好属性和行为,再根据类来创建对象。

image.png

0x03:类和对象的关系

  • 类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象。
  • 使用同一个类,能够创建出很多对象。
  • 类中定义了什么属性和方法,对象中就有什么属性和方法。
  • 不同对象对应的属性值也会不同。

例如:定义了一个狗类,这个狗类有以下属性:

  • 品种
  • 颜色
  • 性别
  • 名字

现在根据这个类创建出了两条狗,这两条狗分别是哈士奇、灰色、母、二哈和中华田园犬、黄色、公、旺财。我们发现,这两条狗都具有 品种、颜色、性别和名字这些属性,但是每条狗对应的属性值却不一样。

0x04:类的设计

在程序开发中,要设计一个类,通常需要满足一下三个要素:

  1. 类名这类事物的名字,安照大驼峰命名法(每个单词的首字母大写)起名。
  2. 属性这类事物具有什么样的特征。
  3. 方法这类事物具有什么样的行为。

定义类名

名词提炼法:分析整个业务流程,出现的名词,通常就是找到的类。

属性和方法的确定

  • 对对象的特征描述,可以定义成属性
  • 对象具有的行为(动词)可以定义成方法 ```python class Student(object): # 关注这个类有哪些特征和行为

    init 方法里,以参数的形式定义特征,我们称之为属性

    def init(self, name, age, height):

    1. self.name = name
    2. self.age = age
    3. self.height = height

    行为定义为一个个函数

    def run(self):

      print('正在跑步')
    

    def eat(self):

      print('正在吃东西')
    

使用 Student 类创建了两个实例对象 s1 s2

s1和s2都会有name,age,height属性,同时都有run和eat方法

s1 = Student(‘小明’, 18, 1.75) # Student() ==> 会自动调用 init 方法 s2 = Student(‘小美丽’, 17, 1.65)

根据业务逻辑,让不同的对象执行不同的行为

s1.run() s1.eat()

s2.eat()

```