caicaix

导航

面向过程、面向对象、类

面向过程

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

例:

 #以注册功能为例:

  1.接受用户名和密码

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

  3.把数据写入到文件里

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

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

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

 

面向对象

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

  1.在生活中:

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

  2.在程序中:

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

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

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

优点:扩展性强

缺点:编程复杂度变高了

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

 

类的定义和对象的产生

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

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

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

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

  def bbb():    # bbb就是方法

    pass

定义类时发生的事情:

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

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

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

 

产生对象、调用类

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

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

__init__方法,调用类会自动把对象当成第一个参数传给self

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}

 

posted on 2023-06-27 17:04  菜CAIx  阅读(9)  评论(0编辑  收藏  举报