面向对象编程

  • 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. 开发者如何快速搭建自己的电商App?

    面向电商购物场景,HMS Core提供了创新的电商解决方案,帮助应用快速获客.提升转化率,实现业务增长.为了帮助开发者了解如何在电商购物类应用中集成HMS Core的各项能力,HMS Core开发了电 ...

  2. kivy八种布局方式学习

    kivy八种布局:FloatLayout.BoxLayout.AnchorLayout.GridLayout.PageLayout.RelativeLayout.ScatterLayout.Stack ...

  3. .user.ini和.htaccess

    .user.ini .user.ini的使用条件 (1)nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法 php配置访问级别 不同的php配置项根据其访问级别具有不 ...

  4. let 及const

    ES5中的块级作用域 ES5中只有全局作用域和函数作用域,这样带来了很多的不便利,会出现内层变量被外层变量覆盖,循环体中的变量会暴露在全局,很多情况下需要自执行函数来私有化变量. ES6块级的作用域 ...

  5. 高楼扔鸡蛋问题(鹰蛋问题) POJ-3783

    这是一道经典的DP模板题. https://vjudge.net/problem/POJ-3783#author=Herlo 一开始也是不知道咋写,尝试找了很多博客,感觉有点领悟之后写下自己的理解. ...

  6. Spring Cloud Aliaba - Ribbon

    Ribbon(有关介绍见RestTemplate末尾) Ribbon负载均衡实现策略 Ribbon负载均衡实现策略通过接口IRule进行实现,默认使用ZoneAvoidanceRule规则进行负载均衡 ...

  7. 安鸾CTF Writeup SSRF03

    SSRF03 题目URL: http://whalwl.host:2000/ 其中的弯路我就不多说了,直接上解题思路 方法和SSRF02类似都是找内网机器端口,继续用ssrf02 这道题的方法:htt ...

  8. NOIP 模拟 7 考试总结

    T1 超级大水题,用 \(kmp\) 和 \(hash\) 均能过,但都忘了,结果只打了个暴力.难受.板子题,题解就不放了 Code #include<bits/stdc++.h> #de ...

  9. NOIP 模拟 $31\; \rm Cover$

    题解 \(by\;zj\varphi\) 因为对于所有区间,都只有包含和被包含关系,这就是一个树形结构. 设 \(\rm f_{i,j}\) 表示在第 \(\rm i\) 个节点,最多被覆盖 \(\r ...

  10. 有了Swagger2,再也不用为写Api文档头疼了

    1.为什么要写Api文档 现在,前后端分离的开发模式已经非常流行,后端开发工程师只负责完成后端接口,前端页面的开发和渲染完全由前端工程师完成. 问题来了,前端工程师怎么知道后端接口的具体定义呢?答案是 ...