首页 > 其他分享 >面向过程、面向对象、类

面向过程、面向对象、类

时间:2023-06-27 17:11:19浏览次数:40  
标签:__ name hp 面向对象 Games 面向 hero1 过程 self

面向过程

 面向过程的核心就是过程二字,即是先干什么,再干什么,最后干什么,就是机械式的思维方式

例:

 #以注册功能为例:

  1.接受用户名和密码

  2.做逻辑处理,验证参数

  3.把数据写入到文件里

优点:复杂的问题简单化,进而流程化

缺点:扩展性差,牵一发而动全身

使用场景:对扩展性要求不高的地方,一般使用面向过程

 

面向对象

 面向对象的核心就是"对象​"二字

  1.在生活中:

    对象就是"特征"与"技能"的结合体

  2.在程序中:

    对象就是盛放数据"属性"和"方法"的结合体

    # 属性: 简单理解就是变量

    # 方法:简单理解就是函数,或者叫功能

优点:扩展性强

缺点:编程复杂度变高了

使用场景:一般用在对拓展性要求较高的地方

 

类的定义和对象的产生

对象是特征与技能的结合体

类就是一系列相似的特征和相似的技能的结合体

class  aaa():  # class下的子模块构成一个类

  a = 'aa'  # a就是一个属性

  def bbb():    # bbb就是方法

    pass

定义类时发生的事情:

  1.类一旦被定义,会立马执行类体代码

  2.类一旦定义完成,会产生类的名称空间,它会把类的名字都丢到类的名称空间去

  3.会把类的名称空间绑定给__dict__属性,如何查看:类名.__dict__​​

 

产生对象、调用类

在程序中先定义类,然后调用类产生对象。调用类就是  类名()

每一次调用类,都会产生一个对象,并且产生的对象之间是互相独立的,互不影响的。

class Games:
    is_type = 'hero'

    def __init__(self, name, wqe, mp, hp):
        self.name = name
        self.wqe = wqe
        self.mp = mp
        self.hp = hp


hero1 = Games('瑶瑶公主', 162, 440, 2587)    # 产生对象,就是调用一个类的结果
print(hero1)     # <__main__.Games object at 0x0000017F416C5A90>对象的内存地址
print(hero1.__dict__)   
# {'name': '瑶瑶公主', 'wqe': 162, 'mp': 440, 'hp': 2587},如果没有__init__函数的话就是一个空字典{}

同一个类产生对象中独有的属性

调用同一个类,通过传递不同数值,使产生的对象内存储独有的属性

我们在类里定义一个名字__init__的方法,然后用这个方法接收传入的参数,然后产生属性

class Games:
    is_type = 'hero'

    def __init__(self, name, wqe, mp, hp):  # 形参
        self.name = name    # 前面的name是所产生字典中的key值
        self.wqe = wqe      # 后面的是传入形参所对应的值
        self.mp = mp
        self.hp = hp


hero1 = Games('瑶瑶公主', 162, 440, 2587)
hero2 = Games('飞飞公主', 153, 100, 3440)
print(hero2.__dict__)       # {'name': '飞飞公主', 'wqe': 153, 'mp': 100, 'hp': 3440}
print(hero1.__dict__)       # {'name': '瑶瑶公主', 'wqe': 162, 'mp': 440, 'hp': 2587}

 

名字的查找顺序

属性的分类

1.类属性

  在类里面定义的属性就是类属性

类属性的增删改查:

就是通过 类名.类属性 进行

class Games:
    is_type = 'hero'

    def __init__(self, name, hp):
        self.name = name
        self.hp = hp


hero1 = Games('瑶瑶公主', 2587)
# 查
print(Games.is_type)   # hero

# 增
Games.x = '装备'
print(Games.__dict__)   # {'__module__': '__main__', 'is_type': 'hero', ...,  'x': '装备'}

# 改
Games.x = '铭文'
print(Games.__dict__)   # {'__module__': '__main__', 'is_type': 'hero', ...,  'x': '铭文'}

# 删
del Games.x
print(Games.__dict__)   # {'__module__': '__main__', 'is_type': 'hero', ...}

 

2.对象属性

  在方法里定义的属性,并通过传参获得的独有属性

对象属性的增删改查:

就是通过 对象.对象属性 进行

如果在对象属性里面找不到,就会去类属性里面找,如果类属性里也没有,则会报错

class Games:
    is_type = 'hero'

    def __init__(self, name, hp):
        self.name = name
        self.hp = hp


hero1 = Games('瑶瑶公主', 2587)
# 查
print(hero1.name)   # 瑶瑶公主

# 增
hero1.mp = 440
print(hero1.__dict__)   # {'name': '瑶瑶公主', 'hp': 2587, 'mp': 440}

# 改
hero1.mp = 400
print(hero1.__dict__)   # {'name': '瑶瑶公主', 'hp': 2587, 'mp': 400}

# 删
del hero1.mp
print(hero1.__dict__)   # {'name': '瑶瑶公主', 'hp': 2587}

 

标签:__,name,hp,面向对象,Games,面向,hero1,过程,self
From: https://www.cnblogs.com/caicaix/p/17505664.html

相关文章

  • 终于找到了一篇文章!通俗地讲解面向对象的工作原理
    日语中有一句杂俳,大意是“看不懂药品的疗效说明书,反而让人觉得药很有效”。 面向对象也有类似之处。“封装、多态和继承三种结构”“现实世界和软件是无缝的”等,当第一次听到这些时,相信不少人都会觉得“虽然不是很明白,但好像很厉害的样子”。 今天就来通俗地给大家介绍面向对象编......
  • Spring面向切面编程(AOP)
    在软件开发中,我们经常需要解决一些与业务逻辑无关的横切关注点(cross-cuttingconcerns),例如日志记录、性能监测、事务管理等。传统的面向对象编程方法往往将这些关注点与核心业务逻辑混杂在一起,导致代码的可维护性和可扩展性下降。为了解决这个问题,Spring框架引入了面向切面编程(AOP......
  • DataNode的FullGC的处理过程
    背景:因公司每天中午11:08~11:40之间,DataNode所有的节点都会挂一会,主要是因为任务太过于集中的原因,在加上公司的HDFS的数据存储已经快达到了2P,DataNode的GC参数还是原来的4G,需要针对问题进行处理处理方案:先查看DataNode的GC情况jpsjstat-gcutil55336查看FGC有1574次1.先把集群......
  • ubunut 虚拟机 , 编译过程中, 内存爆满, 卡死 ,重启后报错。
    问题: 在虚拟机中编译linux 过程中,内存沾满,之后强制重启,之后,虚拟机无法启动。报错如下:  解决的方法就是,找到虚拟机的文件夹,然后删除以.lck后缀的文件夹,所有的都产出,重启就可以了。 ......
  • 第二章 面向对象的特性
    demo1.php<?php //创建一个电脑类 classComputer{ //什么叫做类内,就是创建类的花括号内的范围叫做类内,其他地方则内外。 //public是最字段的公有化,这个字段类外即可访问,赋值和取值 public$_name; } $computer=newComputer(); $computer->_name='dell'; echo$c......
  • 第一章 面向对象的基础
    Demo1.php<?php //怎样去创建一个类格式:修饰符class类名{} //我们去创建一个电脑的类,这类可以创建出对象(生产出电脑) classComputer{//类名第一个字母大写 } //创建一台电脑出来,也就是对象的声明 //格式:变量=new类名() //newComputer()表示实例化的过程(意思......
  • 第三章 面向对象的工具
    computer.class.php<?php classComputer{ public$_name='dell'; publicfunction_run(){ echo'运行'; } }?> person.class.php<?php classPerson{ }?> demo1.php<metacharset="UTF-8"><?php ......
  • 绑定方法与非绑定方法、隐藏属性、property装饰器、面向对象的三大特征
    绑定方法绑定给对象的方法特殊之处:函数的第一个形参self就是对象自己。绑定给对象的方法就会有对象来调用,会把对象自己当成第一个参数传给第一个形参self类调用,就需要传参数,方法里面有几个参数就要传几个参数classStudent():school='SH'#类的属性def_......
  • 面向对象之对象的三大特性
    一、封装封装是一种将数据和相关方法组合成一个单独的实体的机制。它将数据(属性)和操作数据的方法(方法)封装在一个对象中,并对外部代码隐藏了内部的实现细节。通过封装,对象可以提供一个公共接口,使得外部代码可以通过该接口访问和操作对象的数据,而不需要了解其内部的具体实现。二、......
  • 记录去重保留一条和联表删除的排坑过程
    因为接触的数据库比较多,各个库之间有些细节有出入没有注意就会踩坑一、场景要求生产库中有一张主表tbl_invoice_xbk5和明细表tbl_invoice_item_xbk5,关联字段是主表的INV_ID和明细表的ID对应,由于前期设计缺陷,发现主表中INVOICE_NO字段有重复数据,需要去重只保留一条,且对应的明细......