趣味解读Python面向对象编程 (类和对象)

简介: 趣味解读Python面向对象编程 (类和对象)

一、面向对象简介

考虑现实生活中,我们的思维方式是放在学生这个个人上,是学生做了自我介绍。而不是像我们刚刚写出的代码,先有了介绍的行为,再去看介绍了谁。

用我们的现实思维方式该怎么用程序表达呢?

  • 面向过程:根据业务逻辑从上到下写代码。
  • 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程。

    面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑。
    

今天来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)。

面向对象编程的2个非常重要的概念:类和对象。

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类。

类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象。

二、分析类与对象

1. 类

物以类聚,人以群分。
具有相似内部状态和运动规律的实体的集合(或统称为抽象)。
具有相同属性和行为事物的统称。

类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在,一个类可以找到多个对象。

2. 对象

某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。可以是直接使用的。

3. 类和对象之间的关系

小总结:类就是创建对象的模板。

4. 区分类和对象

奔驰smart 类
张三的那辆奔驰smart 对象
水果 类
苹果 类
红苹果 类 红富士苹果 类
我嘴里吃了一半的苹果 对象

5. 类的构成

类(Class) 由3个部分构成

  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许对对象进行操作的方法 (行为)

举例:

1)人类设计,只关心3样东西:

  • 事物名称(类名):人(Person)
  • 属性:身高(height)、年龄(age)
  • 方法(行为/功能):跑(run)、打架(fight)

2)狗类的设计

  • 类名:狗(Dog)
  • 属性:品种 、毛色、性别、名字、 腿儿的数量
  • 方法(行为/功能):叫 、跑、咬人、吃、摇尾巴

6. 类的抽象

如何把日常生活中的事物抽象成程序中的类?

拥有相同(或者类似)属性和行为的对象都可以抽像出一个类。

方法:一般名词都是类(名词提炼法)

<1> 坦克发射3颗炮弹轰掉了2架飞机
  • 坦克 --> 可以抽象成类。
  • 炮弹 --> 可以抽象成类。
  • 飞机 --> 可以抽象成类。
<2> 小明在公车上牵着一条叼着热狗的狗
  • 小明 --> 人类。
  • 公车 --> 交通工具类。
  • 热狗 --> 食物类。
  • 狗 --> 狗类。
<3>【想一想】如下图中,有哪些类呢?

说明:

  • 子弹
  • 手榴弹
  • 刀子
  • 箱子

<4>【想一想】如下图中,有哪些类呢?

说明:

  • 向日葵
  • 类名:xrk
  • 属性:颜色、品类
  • 行为:放阳光
  • 豌豆
  • 类名:wd
  • 属性:颜色 、发型、血量
  • 行为:发炮、摇头
  • 坚果:
  • 类名:jg
  • 属性:血量、类型
  • 行为:阻挡
  • 僵尸:
  • 类名:js
  • 属性:颜色、血量、 类型、速度
  • 行为:走、跑跳、吃、死

三、项目

1. 定义类

定义一个类,格式如下:

class 类名:
    方法列表

demo:定义一个Cat类

# 定义类
class Cat:
   # 方法
   def eat(self):
       print("猫在吃鱼....")

   def drink(self):
       print("猫在喝可乐...")

说明:

  • 定义类时有2种:新式类和经典类,上面的Cat为经典类,如果是Cat(object)则为新式类
  • 类名的命名规则按照"大驼峰"。

2. 创建对象

Python中,可以根据已经定义的类去创建出一个个对象。

创建对象的格式为:

对象名 = 类名()

创建对象demo:

# 定义一个类
class Cat:
   # 属性
   # 方法
   def eat(self):
       print("猫在吃鱼....")

   def drink(self):
       print("猫在喝可乐...")

# 根据类,创建一个对象
tom = Cat()

3. 调用对象的方法

class Cat:
   # 属性
   # 方法
   def eat(self):
       print("猫在吃鱼....")

   def drink(self):
       print("猫在喝可乐...")

# 创建了一个对象
tom = Cat()
tom.eat() # 调用对象的eat方法
tom.drink()

运行结果,如图所示:

4. 给对象添加属性

class Cat:
    # 属性
    # 方法
    def eat(self):
        print("猫在吃鱼....")

    def drink(self):
        print("猫在喝可乐...")

# 创建了一个对象
tom = Cat()

# 给对象tom添加了一个属性,叫name,里面的值是"汤姆"
tom.name = "汤姆"

# 给对象tom添加了一个属性,叫age,里面的值是30
tom.age = 30

# 调用tom的方法
tom.eat()
tom.drink()
print(tom.name)
print(tom.age)

运行结果,如图所示:

5. 通过方法获取对象属性。

class Cat:
    # 属性
    # 方法
    def eat(self):
        print("猫在吃鱼....")

    def drink(self):
        print("猫在喝可乐...")

    def introduce(self):
        # print("名字是:%s, 年龄是:%d" % (汤姆的名字, 汤姆的年龄))
        print("名字是:%s, 年龄是:%d" % (tom.name, tom.age))

# 创建了一个对象
tom = Cat()

# 给对象tom添加了一个属性,叫name,里面的值是"汤姆"
tom.name = "汤姆"
tom.age = 30

# 调用tom的方法
tom.eat()
tom.drink()

# 直接通过对象获取其属性
print(tom.name)
print(tom.age)

print("-"*30)

# 调用tom的方法,在其方法中获取它的属性
tom.introduce()

运行结果,如图所示:

四、总结

本文以生活中的基础现象为切入点,主要介绍了Python的面向对象基础知识,用丰富的案例帮助大家更好的去了解对象,最后以一只猫作为小项目,使用Python编程语言,方便大家增加对类和对象的认识,希望对大家的学习有帮助。
想学习更多Python网络爬虫与数据挖掘知识,大家可前往专业网站:http://pdcfighting.com/

相关文章
|
5月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
191 4
|
5月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
6月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
649 3
|
6月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
185 0
|
10月前
|
Python
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
505 15
|
10月前
|
安全 测试技术 开发者
Python中的“空”:对象的判断与比较
在Python开发中,判断对象是否为“空”是常见操作,但其中暗藏诸多细节与误区。本文系统梳理了Python中“空”的判定逻辑,涵盖None类型、空容器、零值及自定义对象的“假值”状态,并对比不同判定方法的适用场景与性能。通过解析常见误区(如混用`==`和`is`、误判合法值等)及进阶技巧(类型安全检查、自定义对象逻辑、抽象基类兼容性等),帮助开发者准确区分各类“空”值,避免逻辑错误,同时优化代码性能与健壮性。掌握这些内容,能让开发者更深刻理解Python的对象模型与业务语义交集,从而选择最适合的判定策略。
403 5
|
10月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
258 11
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
644 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
11月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
268 1
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
296 2

推荐镜像

更多