python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象
1. 面向对象初识
1.面向过程编程vs函数式编程
减少了重复代码
增强了可读性
2.函数式编程vs面向对象编程
面向对象的第一个优点:
对相似功能的函数,同一业务下的函数进行归类,分类
面向对象的第二个优点:
站在上帝的角度构建代码,类就是一个公共的模板,对象就是从模板中实例化出来的,得到对象就是得到了一切. 类:具有相同属性和功能的一类事物
对象:某个类的具体表现
2. 面向对象的结构
类名:驼峰体,不要使用下划线
class Human: # (Human后面的括号可以有(继承),也可以没有,没有的话默认继承object)
mind = '有思想' # 1.类的属性(静态属性/静态字段)
def work(self): # 2.动态方法
print("人类都会工作")
3. 从类名的角度研究类
3.1 类名操作类中的属性
1.类名查看类中的所有方法
print(类名.__dict__) 2.类名操作类的静态属性,万能的点.
增:Human.body = "有头"
删:del Human.mind
改:Human.mind = "无脑"
查:Human.language
3.2 类名调用类中的方法
一般类中的方法,不会通过类名调用 总结:一般类名就是操作类中的属性
4. 从对象的角度研究类
4.1 实例化一个对象发生的三件事(非常重要)
对象是从类中出来的,只要是类名加上(),这就是一个实例化过程,这个就会实例化一个对象 1.通过object的__new__方法,产生并返回一个内存空间。
2.自动执行类中的__init__方法,并将这个对象空间(内存地址)传给了__init__方法的第一个位置参数self。
3.在__init__ 方法中通过self给对象空间封装属性。
4.2 对象操作对象空间的属性
1.对象查询对象中所有属性。 对象.__dict__
2.对象操作对象中的单个属性。 万能的点 .
4.3 对象查看类中的属性 (注意:只能查看,不能更改)
class Human: mind = '有思想'
language = '汉语'
def __init__(self,name,sex,age,hobby):
self.n = name
self.s = sex
self.a = age
self.h = hobby obj = Human('张三','男',18,'运动')
print(obj.mind)
print(obj.language)
obj.a = 666
print(obj.a)
4.4 对象查看类中的方法
类中的方法一般都是通过对象执行的(除去类方法,静态方法外),并且对象执行这些方法都会自动将对象空间传给方法中的第一个参数self。 class Human:
mind = '有思想'
language = '汉语'
def __init__(self,name,sex,age,hobby):
self.n = name
self.s = sex
self.a = age
self.h = hobby def work(self):
print(self)
print('人类会工作') def tools(self):
print('人类会使用工具') obj = Human('张三','男',18,'运动')
obj.work()
obj.tools()
5. self 是什么
self其实就是类中方法(函数)的第一个位置参数,只不过解释器会自动将调用这个函数的对象传给self。所以把类中的方法的第一个参数约定俗成设置成self, 代表这个就是对象
6. 一个类可以实例化多个对象
obj1= Human('张三','男',20,'美女')
obj2= Human('李四','男',18,'肥女')
print(obj1,obj2)
print(obj1.__dict__)
print(obj2.__dict__)
python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象的更多相关文章
- python的类和实例化对象
一切皆对象,类也是对象,类来自于元类type,如果一个类没有声明自己的元类,默认它就是元类. 即类是元类的实例,通过type(类)会显示type,而实例来自于类. 类有两个属性,数据属性和函数属性,下 ...
- python中如何统计一个类的实例化对象
类中的静态变量 需要通过类名.静态变量名 来修改 :通过对象不能修改 python中如何统计一个类的实例化对象?? class Person: #静态变量count,用于记录类被实例化的次数 coun ...
- python基础(23):面向过程与面向对象的优劣、初识面向对象
1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...
- python学习 day15打卡 初识面向对象
本节主要内容: 1.面向对象和面向过程 2.面向对象如何编写 3.面向对象和面向过程的对比 4.面向对象的三大特征 一.面向对象和面向过程(重点理解) 1.面向过程:一切以事物的流程为核心.核心是&q ...
- python 面向对象专题(六):元类type、反射、函数与类的区别、特殊的双下方法
目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3. 函数与类的区别 4. 特殊的双下方法 1. 元类type type:获取对象 ...
- Python基础入门(6)- 面向对象编程
1.初识面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本篇随笔将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象 ...
- Python复习笔记(五)面向对象
1. __init__方法 # 1. 为对象在内存 中分配空间 -- 创建对象 # 2. 为对象属性 设置初始值 -- 初始化方法(init)+-------------- # 3. __init__ ...
- Python面向对象01 /面向对象初识、面向对象结构、类、self、实例化对象
Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向 ...
- 巨蟒python全栈开发-第16天 核能来袭-初识面向对象
一.今日内容总览(上帝视角,大象自己进冰箱,控制时机) #转换思想(从面向过程到面向对象) 1.初识面向对象 面向过程: 一切以事物的发展流程为中心. 面向对象: 一切以对象为中心,一切皆为对象,具体 ...
随机推荐
- WPF中DataTemplateSelector的简单应用
WPF中DataTemplateSelector的简单应用 DataTemplateSelector中文叫数据模板选择器,根据数据模型内的属性值选择不同的数据模板,多用于容器如listbox中,达到同 ...
- Calculating a “Row X of Y”
显示 “Row X of Y,” ,X是当前行,Y是总行数, 那就是 ROW_NUMBER(ORDER BY stor_id) of Count(*) OVER()此处还是以样例数据库 pub 为例 ...
- [每日一题2020.06.14]leetcode #70 爬楼梯 斐波那契数列 记忆化搜索 递推通项公式
题目链接 题意 : 求斐波那契数列第n项 很简单一道题, 写它是因为想水一篇博客 勾起了我的回忆 首先, 求斐波那契数列, 一定 不 要 用 递归 ! 依稀记得当年校赛, 我在第一题交了20发超时, ...
- mermaid使用简介(画论文插图的一种解决方案)
官方IO: https://mermaid-js.github.io/mermaid/#/ 官方对mermaid的简介是这样的:Markdownish syntax for generating fl ...
- MDX
简介 把md文件里的图片转成base64,方便发给别人和上传博客园等博客平台 初衷 用Typora写markdown的感觉很爽,但是每当我写好一篇文章,想要发给小伙伴们炫耀炫耀,或者上传博客园,CSD ...
- ObjectOutputStream和ObjectInputStream对对象进行序列化和反序列化
1 Java序列化和反序列化简介 Java序列化是指把对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为java对象的过程. 我们把对象序列化成有序字节流,保存到本地磁盘或者Redis等 ...
- 迷你图书管理系统 源代码 Java初级小项目
今天博主再给大家分享一个小项目:MiNi图书管理系统.用的是Java语言开发的,代码不多,大概260行左右吧,系统是实现图书的新增图书.删除图书.借阅图书.归还图书.查看图书等简单的功能(后附源代码) ...
- Spring:如何实现注解的组合
Spring中存在很多注解组合的情况,例如@RestController @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @ ...
- Nginx深入学习(一篇搞定)
我们的口号是:人生不设限! 一.nginx简介 1.什么是nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发 ...
- 深入解读Dictionary
Dictionary<TKey,TValue>是日常.net开发中最常用的数据类型之一,基本上遇到键值对类型的数据时第一反应就是使用这种散列表.散列表特别适合快速查找操作,查找的效率是常数 ...