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)

在类的代码中,我们可以定义变量和函数

  1. 定义在类中的变量会成为该类实例的公共属性,所有的实例都可以通过 “对象.属性名” 的形式来访问
  2. 定义在类中的函数会成为该类实例的公共方法,所有的实例都可以通过 “对象.方法名()” 的形式来访问

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面向对象——类(上)相关推荐

  1. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

  2. Python面向对象---类的基本使用

    1.面向对象 类(class):是一种用来描述具有相同属性和方法的对象的集合. 类变量:类变量在整个实例化的对象中是公用的.一般定义在类中且在函数体之外. 方法:类中的函数 数据成员:类变量或者实例变 ...

  3. python面向对象类的成员_Python面向对象中类的成员

    Python面向对象中类的成员总共有三种,分别是字段.方法和属性 Python Version: 3.5+ 字段 普通字段1 2 3 4 5 6 7 8class A: def __init__(se ...

  4. python面向对象类创建人物类包含姓名、职业_Python面向对象思想与应用入门教程【类与对象】...

    本文实例讲述了Python面向对象思想与应用.分享给大家供大家参考,具体如下: 面向对象思想 1.面向对象的设计思想 面向对象是基于万物皆对象这个哲学观点. 2.面向对象和面向过程的区别 面向过程 在 ...

  5. python面向对象 —— 类和对象(一)

    文章目录 一.面向对象的概念 二.类和对象 (一)类 (二)对象 (三)从对象抽象出类 三.创建类 (一)类属性 类变量和实例变量 (二)类的方法 参数 :self 的理解 __init__(初始化方 ...

  6. python面向对象类属性_python面向对象之类属性和类方法案例分析

    本文实例讲述了python面向对象之类属性和类方法.分享给大家供大家参考,具体如下: 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 使用面相对象开发, ...

  7. python面向对象类_python面向对象-类和对象

    一. 类的定义 class类名(): 代码 #定义类 classWasher():defwash(self):print("洗衣服") 注意:类名要满足标识符命名规则,同时遵循大驼 ...

  8. python面向对象类创建人物类包含姓名、职业_python面向对象类

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  9. python面向对象类_python:面向对象(类)

    #!usr/bin/env python # -*- coding:utf-8 -*- __author__ = "Samson" ###类变量与实例变量 class Role: ...

  10. Python面向对象(类的成员之属性)

    day24 类的成员之属性 1 class Foo(): 2 def bar(self): 3 print("bar") 4 5 @property 6 def per(self) ...

最新文章

  1. python填写excel-Python|读、写Excel文件(三种模块三种方式)
  2. thttpd+php 不加载php.ini 问题
  3. 我与计算机编程的不解之缘(2015.9~2022.1)
  4. opencv检测相交点_OpenCV特征点检测------ORB特征
  5. java json 对象如何对属性排序_Java对象集合、对象数组如何排序?你需要知道这两种方式...
  6. 二分答案——进击的奶牛(洛谷 P1824)
  7. (MoMoCMS教程10)创建留言板
  8. 400 道前端面试题!阿里、头条、网易等 19 家大厂面经全公开!
  9. shell定时执行java,shell学习之定时运行作业
  10. chrome老版本_技术周刊 2019-08-06:Chrome 又隐藏了 www
  11. Android应用帧率--FPS测试
  12. matlab测绘 求坐标系,MATLAB在测绘80与2000坐标系转换中的应用
  13. android推箱子实验报告,android开发——推箱子小游戏(前序)
  14. 详细设计的工具——PAD图
  15. 二次函数顶点式计算机,顶点式二次函数表达式
  16. 【提前批】【第二批】CUHK CSE 面经2022.6.17
  17. JavaScript写一个虚拟软键盘,可拼音输入
  18. java memcached清除,需要清除memcach缓存方能解决的几个报错
  19. Mac 硬件驱动(.kext)安装方法
  20. el-input/input取消浏览器记住密码问题

热门文章

  1. linux设置开机自启动的方式总结
  2. Ubuntu18.04 orb-slam3编译出现的错误 undefined reference to symbol ‘_ZN3MPI8Datatype4FreeEv‘ libmpi_cxx.so
  3. boost boost::asio::read read_some receive 区别
  4. 关于linux下anaconda的pip包及其他包的本地更新方法
  5. leetcode 189. 旋转数组(Rotate Array)
  6. bootstrap table 标题列重复
  7. postgresql-定时备份,压缩备份
  8. 201521123070 《JAVA程序设计》第6周学习总结
  9. js-权威指南学习笔记21
  10. Retrofit结合RxJava使用指南