【常见概念简介】

  • 类(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. 【leetcode】43. Multiply Strings(大数相乘)

    Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and ...

  2. c++string转const char*与char*

    #include <iostream> #include <string> #include <memory> using namespace std; const ...

  3. JSP页面的基本结构

    一:一个JSP页面由以下基本元素组成. (1)HTML标签 (2)CSS (3)变量和方法 (4)Java代码段 (5)JSP动作和指令 (6)其他脚本元素(如Javascript) 二:JSP的基本 ...

  4. GIT最基本使用

    带'*':必须操作 不带'*':可能需要而且经常用的 常见步骤为下: *1.克隆项目:有两种不同类型的网址(https/ssh) git clone [url] *2.初始化本地仓库 git init ...

  5. [BUUCTF]PWN——[BJDCTF 2nd]test

    [BJDCTF 2nd]test 步骤 根据题目,ssh连接一下靶机 登录成功后,ls看一下当前目录下的文件,根据提示可知,我们没法直接获取flag字符串,但是我们可以读取test的源码, test. ...

  6. Lookup函数(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...

  7. Windows10下mysql 8.0.19 安装配置方法图文教程

    第一步 下载安装包: 官网 毕竟是甲骨文公司的产品,去官网下真的慢! 这里有两个供选择的,我建议选第一个(因为我先下了第二个,结果失败了,不知道为什么总是出错.) 下载完自行选择路径解压就可以了. 第 ...

  8. CF263B Squares 题解

    Content 有 \(n\) 个边长为 \(a_i\) 的正方形,第 \(i\) 个正方形的四个顶点分别是 \((0,0),(0,a_i),(a_i,0),(a_i,a_i)\),我们定义一个点属于 ...

  9. ftp:500 Illegal PORT command. 425

    局域网用FTP命令访问外网的FTP SERVER,执行任何命令(如dir,ls,put,get)总是报下面的错误ftp:500 Illegal PORT command. 425ftp:Use POR ...

  10. MyBatis学习(二)MyBatis-Statement方式的增删改查

    1.前期准备 项目骨架图如下所示 1.配置conf.xml <?xml version="1.0" encoding="UTF-8" ?> < ...