【常见概念简介】

  • 类(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. webservice--cxf和spring结合

    服务端: 实体: package entity; import java.util.Date; /*** 实体 */ public class Pojo { //温度 private String d ...

  2. Linux学习 - 环境变量配置文件

    一.环境变量配置文件的作用 /etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc 1 /etc/profile的 ...

  3. CentOS 6.5下安装Python+Django+Nginx+uWSGI

    1.安装Python31.1先安装zlib库及其他三方库安装uWSGI时需要使用zlib,否则执行python uwsgiconfig.py --build时会报ImportError,就是因为在安装 ...

  4. Linux:变量$#,$@,$0,$1,$2,$*,$$,$?

    写一个简单的脚本 vim var 脚本内容如下: #!/bin/sh echo "the number of parameters passed to the script: $#" ...

  5. Linux系统下部署eleasticsearch+kibana

    1.官网下载eleasticsearch和kibana,两个版本应安装一致,否则会出现kibana连接不上eleasticsearch的情况(这里我以6.3.1为例) eleasticsearch的下 ...

  6. 【Linux】【Services】【NetFileSystem】Samba

    1. 简介 1.1. 背景:case is initiative by 某windows无良人事,需求是需要一整块4T的硬盘,由于ESXi5最大支持一块盘是2T大小,而且不可以使用windows动态卷 ...

  7. MyEclipse配置Hibernate框架(基础篇)

    一.创建java project项目 二.项目右键Configure Facets -- Install Hibernate Facet 三.项目添加对应数据库的jar包 四.编写实体类 packag ...

  8. 解决tensorflow和keras版本不相匹配的问题

    查看安装版本 pip list https://docs.floydhub.com/guides/environments/ 查看对应版本 我感觉是我tensorflow版本装太高了,keras没有

  9. 访问者模式(Visitor Pattern)——操作复杂对象结构

    模式概述 在软件开发中,可能会遇到操作复杂对象结构的场景,在该对象结构中存储了多个不同类型的对象信息,而且对同一对象结构中的元素的操作方式并不唯一,可能需要提供多种不同的处理方式,还有可能增加新的处理 ...

  10. 新一代Java程序员必学的Docker容器化技术基础篇

    Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...