编程日常::::
#编程就是程序员用特定的语法加数据结构加算法在计算机上执行过程,方式有很多种,最常用的就是面向对象编程和面向过程编程
#设计思路一开始解决一个大问题,然后把大问题分解成小问题,一步步解决小问题
#面向对象编程方式:利用类和对象创建各种模型来对真实世界的描述
#只要是一个对象,就肯定属于某种品类;只要是对象,一定有属性(也就是功能的意思)
# 类>对象>属性
#特性
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. Java中@Override

    Java中的@Override @Override是伪代码,是"覆盖","重写"的意思 (当子类继承父类时,不写@Override其实也是可以的.) 写了以后好 ...

  2. 禅道服务崩溃 Can't init tc log

      0.环境 禅道 版本12.4.3 数据库 10.1.22-MariaDB SQL 服务器 192.168.0.82 centos 7 step 1.问题 磁盘爆满后,禅道在启动时报数据库 Can' ...

  3. 发现一个API接口自动化测试平台

    gitee地址:https://gitee.com/season-fan/autometer-api 记录一下: 1.API测试平台的5个需求: ①支持不同的项目,不同的角色,技术人员多人协作 ②支持 ...

  4. App自动化中 - 三大元素定位工具

    文章转自:https://blog.csdn.net/lkm564513278/article/details/105511411 在日常android app自动化测试工作当中,使用一种工具可能难以 ...

  5. Datax-web入门配置与启动

    在idea中启动Datax-web 需要先将Datax在本地安装,可以参考这篇文章(datax在win10中的安装) 1.从github上拉取源码 https://github.com/WeiYe-J ...

  6. 1. ansible学习总结: 基础模块

    copy模块: #传输文件到目标机 ansible -i /kingdee/ansible/host all -m copy -a 'src=/tmp/aaaa.tgz dest=/tmp/aaaa. ...

  7. android defaluthttpclient timeout 整理

    android defaulthttpclient 超时无效的相关解放方式记录: With the marked solution I am still getting a UnknownHostEx ...

  8. Java基础学习:9、访问修饰符

    Java提供四种访问控制修饰符,用于控制方法和属性(成员变量)的访问权限(范围). 注意事项: 1.修饰符可以访问类中的属性.成员方法.以及类. 2.只用默认修饰符.public可以修饰类. 3.成员 ...

  9. Python列表等长度分割

    1 def list_of_groups(init_list, childern_list_len): 2 ''' 3 :param init_list: 4 :param childern_list ...

  10. VUE3+VITE 常见问题解决

    reactive解构最深的一层,失去响应性问题 pinia创建的store,使用结构失去响应性 reactive包裹后的对象 重新赋值失去响应性 无法动态引入图片 在computed中传参数 vue3 ...