【常见概念简介】

  • 类(class)—— 用来描述某些具有相同属性和方法的对象的集合。格式如下

    class test():
    class_variable
    ...

    def f(self,*arg,**args):
    statement
    ...
  • 类方法 ———— 类中定义的函数(跟普通函数的唯一区别就是:类方法的第一个参数必须是实例/对象自己,习惯上常用self表示(当然,如果你看不顺眼也可以使用其他字符串代替,使用self只是pythonic的习惯而已)。见上方示例)  
  • 类变量 ———— 定义在类中、类方法外,在该类的所有实例间共享。一般情况下建议使用“class.variable”形式访问。
  • 实例变量 ——— 定义在类方法中,且以“self.variable”形式出现。各实例间独享、互不影响。
  • 继承 ————— 一个派生类继承基类的变量和方法,基类可以是单个类也可以有多个类(多个类继承时,按照继承顺序从左到右继承(多个类有相同的变量/方法时以左侧最先匹配到的父类为准))
  • 重载 ————— 又叫“方法重写”:当继承的父类的方法不能完全满足子类需要的时候,一般会在子类中重新定义一个同名方法。

【典型问题剖析】

  类变量 vs 实例变量:

    '''
从代码的可读性、可维护性、易理解等角度出发,建议:
类变量————使用“Class.Variable”形式读取、修改
实例变量————使用“instance.Variable”形式读取、修改

否则,代码结构不易维护、执行结果不易理解
'''

  1)按上述建议访问类变量,代码逻辑清晰、执行结果一目了然:

    代码:

class Person:
name = 'Hello '
print(name,'\t'*2,id(name)) def changeName(self):
Person.name += 'Python' #按照建议的规范访问并修改类变量,结果:二种方式读取到的内容一致,没有歧义
print(self.name,'\t',id(self.name))
print(Person.name,'\t',id(Person.name)) p = Person()
p.changeName()

    执行结果:

Hello           1695645322992
Hello Python 1695645419888
Hello Python 1695645419888
Process finished with exit code 0

  2)不遵守上述规范,代码不一定会报错,但执行结果不可控,不利于代码的维护和逻辑理解:

    代码:

class Person:
name = 'Hello '
print(name,'\t'*2,id(name)) def changeName(self):
self.name += 'Python' #不按照建议的规范访问并修改类变量,结果:二种方式读取到的内容一致,没有歧义
print(self.name,'\t',id(self.name))
print(Person.name,'\t',id(Person.name)) p = Person()
p.changeName()

    执行结果:

Hello           2145404866288
Hello Python 2145404963184
Hello 2145404866288
Process finished with exit code 0

Python的面向对象常见概念解析的更多相关文章

  1. Python中面向对象的概念(科普)

    面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...

  2. python 中面向对象的概念

    原文 域和作用空间 本地域,函数域(nonlocal)和 全局域(global) def scope_test(): def do_local(): spam = "local spam&q ...

  3. Python中面向对象的概念

    1.语言的分类 1)面向机器 抽象成机器指令,机器容易理解.代表:汇编语言. 2)面向过程 做一件事,排除步骤,第一步做什么,第二步做什么,如果出现A问题,做什么处理,出现b问题,做什么处理.问题规模 ...

  4. python基础---面向对象的概念

    1.面向对象 什么是面向过程?? 将一个复杂单位问题一步步小化,最终只需要完成一个人小的功能就可以了 比如:将大象放进冰箱要几步? 一共三步:打开冰箱,把大象塞进入,关门就可以了 优点:复杂度降低了, ...

  5. Python -面向对象(一 基本概念)

    一 Python简单介绍 Python是一个可移植的面向对象的脚本语言. Python尽管是一个脚本语言,但也是一个全然面向对象的语言.由于它设计之初把易用性做为很重要的一个考量标准,所以用起来很简洁 ...

  6. python中面向对象_类_对象的概念与定义

    1. 面向对象的概念,面向对象是一种编程思想. 是对现实世界中一类事物的抽象,在编程中可以理解为是一种建立现实世界事物的模型 2.  面向对象和面向过程的区别: 面向过程关注的是完成工作的步骤. 面向 ...

  7. Python面向对象之面向对象基本概念

    面向过程和面向对象概念 过程和函数:过程类似于函数,只能执行,但是没有返回结果:函数不仅能执行,还能返回结果. 面向过程和面向对象 基本概念 面向过程-怎么做 把完成某一个需求的所有步骤从头到尾逐步实 ...

  8. python面向对象基本概念(OOP)

    面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...

  9. python学习------面向对象的程序设计

    一 面向对象的程序设计的由来 1940年以前:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数 据.简单来说,就是直接编写 和 的序列来代表程序语言 ...

随机推荐

  1. C++基本函数的调用优化(构造、拷贝构造、赋值)

    合理的函数可提升时间和空间的利用率 //Test1.h #include<iostream> using namespace std; struct ST { private: int a ...

  2. 【分布式】Zookeeper伪集群安装部署

    zookeeper:伪集群安装部署 只有一台linux主机,但却想要模拟搭建一套zookeeper集群的环境.可以使用伪集群模式来搭建.伪集群模式本质上就是在一个linux操作系统里面启动多个zook ...

  3. linux查询健康状态,如何直观的判断你的Linux系统是否健康

    一提到对于查看系统运行的健康状况,可能大多数朋友考虑到的就是查看进程或者打开任务管理器,但是对于应用在真实生产环境中服务器的linux系统来说,以上两种方式都不是***效的查看方式,那么今天就给大家推 ...

  4. 图书管理系统总结——JAVA Swing控件简介

    断断续续学习JAVA语言,写了一个多月数据库大作业,终于在五一过后写完了.由于第一次使用JAVA和数据库,遇到了许多问题,记录下来,以备以后查看. 我使用的JAVA SE,说实话,在开发后期,觉得JA ...

  5. angular过滤器在html和js中的使用

    在HTML中使用格式为:{{数据 | 过滤器名称:条件一:条件二--}}:过滤条件间使用:隔开 例如: 在代码中一般格式为:  变量 = $filter("过滤器名称")(被过滤数 ...

  6. @Deprecated注解功能

    @Deprecated注解功能 标记不建议使用的方法,但是仍然可以用 当方法有更好的方法替换时,但是此方法还有使用时可以使用该注解

  7. linux重启后JDk环境变量配置失效最终解决方案

    最终解决方案:https://bbs.deepin.org/forum.php?mod=viewthread&tid=147762 其实这个修改可能也存在问题,如果有耐心的可以每次打开终端   ...

  8. [BUUCTF]PWN——others_babystack

    others_babystack 附件 步骤: 例行检查,64位程序,开了挺多保护 本地试运行一下程序 64位ida载入,看main函数 1是read函数,存在栈溢出:2是puts函数,3退出 利用思 ...

  9. M函数目录(Power Query 之 M 语言)

    2021-12-11更新 主页(选项卡) 管理列(组) 选择列 选择列Table.SelectColumns 删除列 删除列Table.RemoveColumns 删除其他列Table.SelectC ...

  10. CF74A Room Leader 题解

    Content 一场 CF 比赛有 \(n\) 个人,有 ABCDE 五道题目.在比赛过程中,参赛者还可以随时互相攻击,成功一次加 \(100\) 分,失败一次扣 \(50\)分,已知第 \(i\) ...