python面向对象——类(上)
python面向对象——类(上)
python面向对象——类(上)
- python面向对象——类(上)
- 1. 面向对象简介
- 2. 类(class)
- 3. 类的定义
- 4. 参数self
- 总结
1. 面向对象简介
- Python是一门面向对象的编程语言,所谓的面向对象就是语言中的所有操作都是通过对象来进行的。
- 面向过程:
。面向过程指将程序分解为一个一个步骤,并按照每个步骤来一一实现。 - 面向过程的缺点
。这中编写方式往往只适用于一个功能,很难实现多个功能,代码的复用性低 - 面向过程的优点
。这种编程方式符合人类的思维,编写起来较容易。如:妈妈煮饭
1 . 需要先清洗电饭锅
2 往锅中加米
3 . 清洗米
4 . 给电饭锅插上电
5 . 静等米饭煮熟 - 面向对象的编程语言,关注的是对象,而不是过程。如上述的例子,面向对象的编程语言只关注最后米饭是否煮熟
- 面向对象的编程思想,将所有功能统一保存到对应的对象中,要使用某个功能,直接找到对应的对象即可
- 这种编码方式比较容易阅读,并且易于维护,容易复用。但是编写的过程中不太符合常规的思维,编写相对麻烦
2. 类(class)
- 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。简单理解就相当于一张图纸,在程序汇总我们需要更具类来创建对象。
#语法
class 类名([父类]):
pass
- 类也是一个对象,类就是用来创建对象的对象
- 可以向对象中添加变量,对象中的变量称之为属性 语法:对象.属性名 = 属性值
class MyClass(): #定义一个类passp1 = MyClass() #类的实例化
p1.name = '刘亦菲' #添加公共变量
3. 类的定义
- 类和对象都是对现实生活中事物的抽象
- 包含两部分:
。1.数据(属性)
。2.操作(方法) - 调用方法 对象.方法名()
- 方法调用和函数调用的区别:
1.如果是函数调用,调用时有几个形参,就会传递几个实参。
2.如果是方法调用,默认传递一个参数,所以方法中至少得有一个形参
# 在python中,你想使用一个东西,你必须先创建一个这样的对象
# 自定义类 如:图纸 通过图纸创造出来的汽车 汽车就是通过图纸创建出来的实例对象
# 定义类的语法
# class 类名([父类]):
# passclass MyClass(): #定义类,给它命名为MyClass 类相当于图纸 类对象 只是用于存储的功能passmc = MyClass() #创建实例对象(类的实例化)实例对象 实现效果的功能#类对象 (存储属性、功能) 实例对象(实现效果的功能)
mc1 = MyClass()
print(id(mc),id(mc1))#类可以创建多个实例,每个实例各不相同,这一些实例我们称呼为一类实例#isinstance() 用来检测这个实例是否是这个类创建出来的
print(isinstance(mc,MyClass))
在类代码块中,我们可以定义变量和函数
变量会成为该类实例的公共属性,所有的该实例都可以通过 对象.属性名的形式访问
函数会成为该类实例的公共方法,所有该类实例都可以通过 对象.方法名的形式访问
类的使用
class Person(): #定义一个类name = '邓紫棋' #属性def speak(self): #方法 类中的函数不叫做函数了,叫做方法print('你好')p1 = Person() #类的实例化
print(p1.name) #实列.属性 就可以获取到这个属性值
p1.speak() #实例.方法p1.name = '刘亦菲' #更改类的属性的值
print(p1.name)p2 = Person()
print(p2.name)
在类的代码中,我们可以定义变量和函数
- 定义在类中的变量会成为该类实例的公共属性,所有的实例都可以通过 “对象.属性名” 的形式来访问
- 定义在类中的函数会成为该类实例的公共方法,所有的实例都可以通过 “对象.方法名()” 的形式来访问
4. 参数self
4.1 属性和方法
- 类中定义的属性和方法都是公共的,任何该类实例都可以访问
- 属性和方法的查找流程
• 当我们调用一个对象的属性时,解析器会现在当前的对象中寻找是否还有该属性,如果有,则直接返回当前的对象的属性值。如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值。如果没有就报错 - 类对象和实例对象中都可以保存属性(方法)
• 如果这个属性(方法)是所以的实例共享的,则应该将其保存到类对象中
• 如果这个属性(方法)是摸个实例独有的。则应该保存到实例对象中
• 一般情况下,属性保存到实例对象中 而方法需要保存到类对象中
4.2 self
- self在定义时需要定义,但是在调用时会自动传入。
- self的名字并不是规定死的,但是最好还是按照约定是用self
- self总是指调用时的类的实例
class Presion():#name = '刘亦菲'#哪个对象调用类的speak方法,那个s就是这个对象,类里通常使用selfdef speak(s):print('你好,我是%s'%s.name)def run(self): #self就等于任何调用这个方法的对象本身passp1 = Presion()
p1.name = '周慧敏'
p1.speak()p2 = Presion()
p2.name = '刘亦菲'
p2.speak()
总结
本文为学习笔记,转载请标明出处,本文仅供交流学习,请勿用于非法途径,希望本文对大家有帮助。
仅是个人意见,如有不足之处或者侵权,请留言
python面向对象——类(上)相关推荐
- Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合
Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...
- Python面向对象---类的基本使用
1.面向对象 类(class):是一种用来描述具有相同属性和方法的对象的集合. 类变量:类变量在整个实例化的对象中是公用的.一般定义在类中且在函数体之外. 方法:类中的函数 数据成员:类变量或者实例变 ...
- python面向对象类的成员_Python面向对象中类的成员
Python面向对象中类的成员总共有三种,分别是字段.方法和属性 Python Version: 3.5+ 字段 普通字段1 2 3 4 5 6 7 8class A: def __init__(se ...
- python面向对象类创建人物类包含姓名、职业_Python面向对象思想与应用入门教程【类与对象】...
本文实例讲述了Python面向对象思想与应用.分享给大家供大家参考,具体如下: 面向对象思想 1.面向对象的设计思想 面向对象是基于万物皆对象这个哲学观点. 2.面向对象和面向过程的区别 面向过程 在 ...
- python面向对象 —— 类和对象(一)
文章目录 一.面向对象的概念 二.类和对象 (一)类 (二)对象 (三)从对象抽象出类 三.创建类 (一)类属性 类变量和实例变量 (二)类的方法 参数 :self 的理解 __init__(初始化方 ...
- python面向对象类属性_python面向对象之类属性和类方法案例分析
本文实例讲述了python面向对象之类属性和类方法.分享给大家供大家参考,具体如下: 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 使用面相对象开发, ...
- python面向对象类_python面向对象-类和对象
一. 类的定义 class类名(): 代码 #定义类 classWasher():defwash(self):print("洗衣服") 注意:类名要满足标识符命名规则,同时遵循大驼 ...
- python面向对象类创建人物类包含姓名、职业_python面向对象类
面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...
- python面向对象类_python:面向对象(类)
#!usr/bin/env python # -*- coding:utf-8 -*- __author__ = "Samson" ###类变量与实例变量 class Role: ...
- Python面向对象(类的成员之属性)
day24 类的成员之属性 1 class Foo(): 2 def bar(self): 3 print("bar") 4 5 @property 6 def per(self) ...
最新文章
- python填写excel-Python|读、写Excel文件(三种模块三种方式)
- thttpd+php 不加载php.ini 问题
- 我与计算机编程的不解之缘(2015.9~2022.1)
- opencv检测相交点_OpenCV特征点检测------ORB特征
- java json 对象如何对属性排序_Java对象集合、对象数组如何排序?你需要知道这两种方式...
- 二分答案——进击的奶牛(洛谷 P1824)
- (MoMoCMS教程10)创建留言板
- 400 道前端面试题!阿里、头条、网易等 19 家大厂面经全公开!
- shell定时执行java,shell学习之定时运行作业
- chrome老版本_技术周刊 2019-08-06:Chrome 又隐藏了 www
- Android应用帧率--FPS测试
- matlab测绘 求坐标系,MATLAB在测绘80与2000坐标系转换中的应用
- android推箱子实验报告,android开发——推箱子小游戏(前序)
- 详细设计的工具——PAD图
- 二次函数顶点式计算机,顶点式二次函数表达式
- 【提前批】【第二批】CUHK CSE 面经2022.6.17
- JavaScript写一个虚拟软键盘,可拼音输入
- java memcached清除,需要清除memcach缓存方能解决的几个报错
- Mac 硬件驱动(.kext)安装方法
- el-input/input取消浏览器记住密码问题
热门文章
- linux设置开机自启动的方式总结
- Ubuntu18.04 orb-slam3编译出现的错误 undefined reference to symbol ‘_ZN3MPI8Datatype4FreeEv‘ libmpi_cxx.so
- boost boost::asio::read read_some receive 区别
- 关于linux下anaconda的pip包及其他包的本地更新方法
- leetcode 189. 旋转数组(Rotate Array)
- bootstrap table 标题列重复
- postgresql-定时备份,压缩备份
- 201521123070 《JAVA程序设计》第6周学习总结
- js-权威指南学习笔记21
- Retrofit结合RxJava使用指南