编程日常::::
#编程就是程序员用特定的语法加数据结构加算法在计算机上执行过程,方式有很多种,最常用的就是面向对象编程和面向过程编程
#设计思路一开始解决一个大问题,然后把大问题分解成小问题,一步步解决小问题
#面向对象编程方式:利用类和对象创建各种模型来对真实世界的描述
#只要是一个对象,就肯定属于某种品类;只要是对象,一定有属性(也就是功能的意思)
# 类>对象>属性
#特性
class类 :一个类拥有相同属性的对象的抽象,共同的方法
object对象:一个对象即是一个类实例化的实例,一个类必须讲过实例化方可在程序中调用就像人类,每一个都是独立的对象,人与人也有相同的特性,亦有不同
#封装:在类中对数据复制
#继承:一个类可以派生出子类
#多态:“一个接口,多个实现”
#oop编程方式(面向对象)
1,重复写代码是非常不好的行为
2,写的代码要经常变更
简单来说:
  面向对象在python中应用是最多的,同时也是不可缺少的,简单理解类和对象的关系,举个例子:假设人类是一个类,那么每一个个体的人就是对象,同时也有相同的特征和不同的特征
  类包含对象的属性,对象是每一个类的实例化体现

概念理解的差不多,不如动手实际动手试试

实 际 操 作

  要求:简化CS游戏,先创建两个人物,分别给他们不同的属性,同时也赋予他们相同的属性(比如说生命值)还有一些功能(死亡和买枪复活)
  
  思路:首先,我们根据要求,先建立一个类,来定义人物的属性,并给这个类添加功能,最后定义两个人物变量来调用这个类
 1,如图(先定一个类):
  
我们可以通过代码看到:Role是类,里面定义了(name,role,weapon,life_value,money)这几个人物属性,并在下面通过三个函数来完成人物功能的操作
2,如图,添加两个人物调用Role并赋值

3,那么该如何调用呢?,这里的r1和r2代表两个人物,上图虽然已经加了参数,但是执行后没有任何内容,这时候我们把#号注释去点看看效果

我们可以看到,Role类被调用,并赋予了r1人物的参数,然后实现了两个函数的功能(死亡和复活)

4,如果我们要改名如何呢?假设我们改r1人物Alex名

对类不做修改,只在最后调用时修改即可,可是问题来了,在此处将类中的name变量改变是没有问题,也就改了名字,但是如果类变量也改变呢?

5,如图,我们再给类添加一个(name = 123)的变量(简称类变量)

如果这样添加,那按第4 步我们修改r1的人名,会不会和类里的变量name冲突呢?我们来执行看一下

发现并没有冲突,类的变量虽然也是name,类中实例的变量也是name,但是在修改实例变量时并没有因为变量名相   同而冲突,这是为什么呢?很简单,因为我们在修改实例变量后调用,其实也是实例的产生,根据实例的产生过程来说,实例在创建时,先找实例本身里的属性(变量),如果没有,再去找类的变量。

6,那么如果 r1 中修改类的变量,r1 和 r2 同时打印类变量,会不会影响r2 的类变量打印呢?

如图:我们在r1中修改类变量( n ) 将 在类中 n 的值“123” 改成 “456”,并打印 r1 和 r2 的结果

我们可以看到,r1 的打印成功将n 改变, r2 也没有因为r1修改类的变量而改变,这是为什么呢?因为看似我们将类的变量做了修改,其实根本就没有将类变量做修改,只是将内存r1中的类变量做了修改,所以不会影响到其他实例。


经过以上问题的测试,我们可以利用以上方法,运用到工作中。

  例如:当我们遇到多数对象调用一个类,并且类中一个或多个属性都会被对象调用,按实例化的过程来看,每一个对象实例时都会调用类中的属性来完成,这样会造成大量内存资源浪费;我们完全可以把相同的属性,写到类的变量里,不必再写到实例变量里,这样,就可以节省资源。

如图:

这里将原本在实例变量里的money 和 value 写道类变量一行(上面)  ,打印r1 和r2,执行一下

: ok


类的用法还有很多,通过以上几种实践,可以清楚的认识对象在调用类时的过程。并且利用类的特性,可以对对象的不同应用,来达到优化的目的,节省资源。


 


python面向对象--类的刨析的更多相关文章

  1. python面向对象(类和对象及三大特性)

    类和对象是什么 创建类 新式类 和 经典类 面向对象三大特性 继承 封装 多态   面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  2. python 面向对象(类的特殊成员)

    python 面向对象: (思维导图 ↑↑↑↑) 类的特殊成员 python的类成员存在着一些具有特殊含义的成员 1.__init__: 类名() 自动执行 __init__ class Foo(ob ...

  3. python面向对象(类的成员及类方法)

    类的普通成员 字段 方法 属性 类的高级成员 静态字段 静态方法 属性方法   类方法 类成员修饰符 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中, ...

  4. python 面向对象(类)

    面向对象,即是将具备某种共性的事物抽象成一个类(模板),然后再根据类来创建实例对象进行具体的使用. 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写, ...

  5. python面向对象——类

    from:http://www.runoob.com/python3/python3-class.html Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在P ...

  6. Python面向对象 --- 类的设计和常见的内置方法

    面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...

  7. python 面向对象类与类之间的关系

    主要内容: 1. 依赖关系 2. 关联关系, 组合关系, 聚合关系 3. 继承关系 4. 类中的特殊成员 引子 大千世界, 万物之间皆有规则和规律,我们的类和对象是对大千世界中的所有事物进行归类. 那 ...

  8. Python——面向对象(类)的基础疑难点

    相信用Python写def函数大家都信手拈来了,但Python作为面向对象的编程语言,怎么能浪费呢? 那问题来了.什么是类呢?什么是实例?什么是对象?方法是什么??属性又是什么???继承?封装?多态? ...

  9. python面向对象--类

    1.类的概念:简单来说就是一组符合逻辑的参数或者是函数,一个种类.一个模型. 一个类中可以包含任意参数,并且可以定义任意个方法,但类并不是随意的将多个参数或者方法包含在class下,而是创建一个在事物 ...

  10. python: 面向对象:类和对象调用类中的变量和方法

    一. 面向对象初识 我们在生活中做事都是面向过程的,前面实现一些基本逻辑功能代码也是用面向过程的语句实现的,后来学了函数,把这些功能又装到了函数里.但用面向过程的方法去写程序,只能实现一个功能,我们要 ...

随机推荐

  1. ERROR StatusLogger No Log4j 2 configuration file found

    ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only er ...

  2. chrome调试秘籍,让你的开发速度飞起来

    前言 熟练使用调试工具,势必能大幅提高我们的开发效率,达到事半功倍的效果.废话不多说,直接进入主题. Filter过滤 过滤器最简单的用法当然是直接输入过滤的字符,但这远远不够.除了直接输入,我们还希 ...

  3. Vue中qrcode的使用方法(生成二维码插件) / 前端页面根据URL链接生成二维码

    1.下载 npm install qrcode --save-dev 2.引入(在所需要的页面中引入) import QRCode from "qrcode"; //引入生成二维码 ...

  4. etcdctl 安装与使用

    介绍 etcdctl是一个提供简洁命令的etcd客户端,使用etcdctl可以直接和etcd服务打交道,对etcd中的键值对进行增删改查. 安装etcdctl 下载etcdctl工具 下载地址:etc ...

  5. HTML中添加点击链接 进行Skype对话的问题

    格式 :XXX 代表Skype账号: 开始 Skype 文字聊天 <a href="skype:XXX?chat">开始 Skype 文字聊天</a> 查看 ...

  6. Tech&W_STU_Resource_bookmark

    整合资料 1 architecture: Enterprise integration patterns : https://www.enterpriseintegrationpatterns.com ...

  7. Mybaties中的报错 Tag name expected解决

    有些时候一些小小的报错可能会没有注意到,等到报错的时候才发现,一个小小的细节也是很重要的,毕竟我们是bug生产员 来看报错的代码 when round((UNIX_TIMESTAMP(DATE_ADD ...

  8. pdf导出 预览、直接打印、打印加预览

    前台: var xueurl = "fileFormatController.do?getXbDetail_print&id=&codes=" + rowsData ...

  9. python_pandas常用操作

    df:任意的Pandas DataFrame对象 s:任意的Pandas Series对象 raw:行标签 col:列标签 导入依赖包: import pandas as pd import nump ...

  10. Linux下设置目录或文件可读写,但不可以删除权限

    例如:现在/home目录下有 :目录 data 和 文件 test.txt (1)设置/home/test.txt可读写但是不可以删除命令(文件设置): sudo chattr +a /home/te ...