Python - 面向对象编程 - 什么是对象和类
2024-09-08 02:04:50
面向对象编程
- 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() 是列表的方法
什么是类
类的定义
- 在现实世界中,具体的实体被称为对象
- 观察这些对象的属性和行为,发现可还是用相同的特征去描述一类对象
对象 | 属性和行为 |
---|---|
美国总统特朗普 | 姓名、年龄、工作 |
中国明星成龙 | 姓名、年龄、工作 |
上海中心大厦 | 高度、业主、维护 |
北京中信大厦 | 高度、业主、维护 |
现实生活中
- 可以使用【姓名、年龄、工作】 等特征去描述特朗普和成龙这一类对象,因为都是人
- 使用【高度、业主、维护】等特征去描述上海中心大厦、北京中信大厦这一类对象,因为都是大厦
编程世界中
- 类是对一组具有相同属性和行为的对象的抽象
- 【人】是一个抽象的概念,它是一个类或类别,描述了具有【姓名、年龄、工作】等特征的一组对象
- 【大厦】是一个抽象的概念,它是一个类或类别,描述了具有【高度、业主、维护】等特征的一组对象
类和对象的区别
- 对象是一个具体的实体,比如【小菠萝】是一个对象,是一个具体的人
- 类是一组具有相同特征的对象,【小菠萝】【成龙】【特朗普】的都是一个具体的人,而人是一个类
类和对象的关系
- 对象属于某个类,对象也可以不属于某个类
- 【小菠萝】是一个人,属于人类,但不是一个大厦,不属于大厦类
最新文章
- 论Pair的重要性
- The server encountered an internal error that prevented it from fulfilling this request.
- lua以xpcall实现try/catch功能
- struts2 CVE-2012-0838 S2-007 Remote Code Execution &;&; Hotfix
- NDK学习一: 环境搭建Eclipse篇
- oracle中复制表和数据 &;&; 多表插入语句
- media type的类型汇总
- 【转】初识CGI
- Linux访问Windows磁盘实现共享
- nyoj_t218(Dinner)
- AHOI2013 Round2 Day1 简要题解
- 3.9 spring-自定义标签解析
- 图像混合学习。运用加权函数,学习opencv基础操作
- 用js实现的刷新页面
- Python语言总结 4.2. 和字符串(str,unicode等)处理有关的函数
- Andio Studio
- laravel会话驱动扩展—连接自定义会话管理系统
- ubuntu网桥设置
- angular2 学习笔记 ( translate, i18n 翻译 )
- Directory /usr/local/hadoop/tmp/tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible
热门文章
- ABC165C题解
- 苹果手机点击输入框input 页面放大 超出屏幕问题
- Android NDK/JIN 从入门到精通
- 老杜告诉你java小白到大神是怎么炼成的(转载)
- 计算机专业学了快一年, 只会一点C语言,你好意思说自己是IT专业的?
- Linux 文件目录管理的指令
- SpringBoot开发二十三-统一记录日志
- CleanArchitecture Application代码生成插件-让程序员告别CURD Ctrl+C Ctrl+V
- APP渗透测试之安卓APP抓包
- NOIP 模拟 $28\; \rm 客星璀璨之夜$