Gamer's Show

你知道人生最要紧的事是快乐不停

0%

面向对象的Python

引子

一个简单的小例子

  1. 通过函数,传入可变参数,最后输出值return是字典,不需要传入的参数是预设的。
  2. 自动给相同类型属性的变量赋值
  3. 实体,属性,功能….
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    attack_vals = {
    "A":30,
    "B":50,
    }
    def dog(name,d_type):#传参的模板
    data = {
    "name":name,
    "d_type":d_type,
    "attack_val":30,
    "life_val":100
    }
    #自动给相同类型属性的变量赋值

    def dog_bite(person_obj) #编辑对象的特定动作,绑定不出错儿~
    person_obj["life_val"] -= data["attack_val"] #执行动作
    #由于data就是在这个函数里定义的,所以直接调用data就可以
    #将函数定义在“狗”的内部,避免被错误地调用
    data["bite"] = dog_bite
    #确保外部可以顺利调用

    if d_type in attack_vals:
    data[attack_val] = attack_vals[d_type]
    else:
    data[attack_val] = 15 #给没有名字的一个默认值
    return data #输出字典类型

    #以此类推可以生成多个实体
    d1 = dog("lym","A")
    d1["bite"](person) #调用dog_bite函数

面向过程 & 面向对象

面向过程编程(Procedural Programming)

  • top-down language,程序从上到下一步步执行,解决问题(分解问题思想)
  • 简单的小脚本,可扩展性差

面向对象编程(Object-oriented Programming)

class : 类

  1. 首字母大写+驼峰命名法;
  2. 属性:类中的变量;
    属性只能通过实例来调用实例.属性
  • 类下直接定义的属性:公共属性,每一个实例会共享这个值。
    公共属性可以直接在外部修改,对单独的实例进行修改就可以~
  • 初始化方法\构造方法\构造函数
    实例化时会自动执行,进行一些初始化工作。
  1. 用于构造一些私有化属性(传到参数里);
    实例属性只被实例享有,不会存到类里,调用报错。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A:
    def __init__(self,attribute1,attribute2):
    #如果真正把属性传到实例,要把两个值和实例绑定:
    self.a1 = attribute1
    self.a2 = attribute2
    #在本函数中可以直接调用,不加实例;
    #外部调用attribute1,2时调用方式与公共相同相同;

    #实例化时传入参数:
    exm = A(attA,attB)
  2. 方法: 类中的函数、功能;
    self: 代表实例本身,必须是方法中第一个参数;
  3. 实例化:将类变为实体