面向对象编程

  • Object Oriented Programming,简称 OOP,是一种程序设计思想
  • OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法

Python里面有一句话:万物皆是对象

在编程领域中,通常把现实世界中的实体称为对象,例如:

  • 美国总统特朗普
  • 中国明星成龙
  • 上海中心大厦
  • 北京中信大厦

对象指的是一个具体的实体,不用于指代一个抽象的群体

  • 小菠萝是一个具体的人,所以可以说小菠萝是一个对象
  • 它是一个中国人,但中国人是一个抽象的概念,指的是一群人
  • 所以不能说中国人是一个对象

类似的,上海中心大厦、北京中信大厦这些具体的大厦可以被称为对象,但是不能说大厦是一个对象

对象的属性和行为

现实世界中的实体有属性和行为,如下列举了特朗普和小菠萝的属性和行为

对象 属性 行为
特朗普 姓名、年龄 自我介绍
小菠萝 姓名、年龄 自我介绍

行为又被称为方法,它是对属性的操作

包括读取操作和修改操作,例如,在特朗普的自我介绍行为中,会读取他的属性:姓名和年龄

Python 对象

对象栗子

# 字符串
'Hello' # 列表
['www', 'poloyy', 'com'] # 元组
('www', 'poloyy', 'com') # 字典
{'name': 'tom', 'age': 123}

对象的属性

>>> string = 'Hello'
>>> print(string.__doc__)
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. >>> list = ['a', 'b', 'c']
>>> print(list.__doc__)
list() -> new empty list
list(iterable) -> new list initialized from iterable's items

__doc__ 是属性,字符串、列表都有这个属性

对象的行为

>>> string = 'Hello'
>>> string.upper()
'HELLO'
>>> list = ['a', 'b', 'c']
>>> list.append('d')
>>> list
['a', 'b', 'c', 'd']
  • upper() 是字符串的方法,也叫行为
  • append() 是列表的方法

什么是类

类的定义

  • 在现实世界中,具体的实体被称为对象
  • 观察这些对象的属性和行为,发现可还是用相同的特征去描述一类对象
对象 属性和行为
美国总统特朗普 姓名、年龄、工作
中国明星成龙 姓名、年龄、工作
上海中心大厦 高度、业主、维护
北京中信大厦 高度、业主、维护

现实生活中

  • 可以使用【姓名、年龄、工作】 等特征去描述特朗普和成龙这一类对象,因为都是人
  • 使用【高度、业主、维护】等特征去描述上海中心大厦、北京中信大厦这一类对象,因为都是大厦

编程世界中

  • 类是对一组具有相同属性和行为的对象的抽象
  • 【人】是一个抽象的概念,它是一个类或类别,描述了具有【姓名、年龄、工作】等特征的一组对象
  • 【大厦】是一个抽象的概念,它是一个类或类别,描述了具有【高度、业主、维护】等特征的一组对象

类和对象的区别

  • 对象是一个具体的实体,比如【小菠萝】是一个对象,是一个具体的人
  • 类是一组具有相同特征的对象,【小菠萝】【成龙】【特朗普】的都是一个具体的人,而人是一个类

类和对象的关系

  • 对象属于某个类,对象也可以不属于某个类
  • 【小菠萝】是一个人,属于人类,但不是一个大厦,不属于大厦类

Python - 面向对象编程 - 什么是对象和类的更多相关文章

  1. python 面向对象编程、获取对象信息

    面向对象与面向过程 参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0 ...

  2. Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性

    什么是对象和类 https://www.cnblogs.com/poloyy/p/15178423.html 什么是 Python 类.类对象.实例对象 https://www.cnblogs.com ...

  3. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  4. python 面向对象编程(一)

    一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class c ...

  5. Python面向对象编程指南

    Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...

  6. python面向对象编程进阶

    python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...

  7. Python面向对象编程(下)

    本文主要通过几个实例介绍Python面向对象编程中的封装.继承.多态三大特性. 封装性 我们还是继续来看下上文中的例子,使用Student类创建一个对象,并修改对象的属性.代码如下: #-*- cod ...

  8. Python 面向对象编程——访问限制

    <无访问限制的对象> 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑.但是,从前面Student类的定义来看(见:Py ...

  9. Python 面向对象编程 继承 和多态

    Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...

随机推荐

  1. anyRTC Web SDK 实现音视频呼叫功能

    前言 大家好,今天小编带给大家一个基于 anyRTC Web SDK 实现音视频呼叫的功能(本项目采用vue开发). 前提条件 在开始写代码之前还需要做一些准备工作,如果你之前没有使用过 anyRTC ...

  2. Netty 源码分析系列(二)Netty 架构设计

    前言 上一篇文章,我们对 Netty做了一个基本的概述,知道什么是Netty以及Netty的简单应用. Netty 源码分析系列(一)Netty 概述 本篇文章我们就来说说Netty的架构设计,解密高 ...

  3. Centos忘记密码怎么修改

    使用Centos系统忘记密码 在我们日常使用Centos系统时,有些人不免会出现一个共同的问题:忘记登录密码! 我们总不能再重装一遍吧! 接下来我们就分两种情况来看看: Centos系统在云服务器 C ...

  4. WinUI 3学习笔记(2)—— 用ListView来展示集合

    在WPF的时代,我们多是使用ListBox和ListView来展示,纵向滚动条显示的集合数据.这两个控件的默认样式,以及对触控的支持,已完全落后于时代.他们两个分别长这样,和Win10及Win11的风 ...

  5. 五、从GitHub浏览Prism示例代码的方式入门WPF下的Prism之MVVM中的EventAggregator

    这一篇我们主要再看完示例12.13后,写了个例子,用于再Modules下执行ApplicationCommands,使用IActiveAware执行当前View的Commands,或者Applicat ...

  6. fiddler抓https包教程

    第一步: 安装fiddler 第二步: 下载fiddler证书生成器 第三步: 进入fiddler导出证书 第四步: 打开浏览器导入证书 第一步:安装fiddler  安装方法各位随意,但需保证是最新 ...

  7. SpringCloud升级之路2020.0.x版-9.如何理解并定制一个Spring Cloud组件

    本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~ 我们实现的 S ...

  8. 记一次 .NET 某WMS仓储打单系统 内存暴涨分析

    一:背景 1. 讲故事 七月中旬有一位朋友加wx求助,他的程序在生产上跑着跑着内存就飙起来了,貌似没有回头的趋势,询问如何解决,截图如下: 和这位朋友聊下来,感觉像是自己在小县城当了个小老板,规律的生 ...

  9. 用notepad2代替notepad

    Windows自带的notepad.exe功能比较弱,notepad2是一个比较好的替代方案,但在任何系统调用notepad的时候都能用notepad2代替并不是一件容易的事,下面是一个解决方法: h ...

  10. Java 多线程与并发【知识点笔记】

    Java 多线程与并发[知识点笔记] Java多线程与并发 先说一下线程与进程的由来: 在初期的计算机,计算机只能串行执行任务,并且需要长时间的等待用户的输入才行 到了后来,出现了批处理,可以预先将用 ...