引子
一个简单的小例子
- 通过函数,传入可变参数,最后输出值return是字典,不需要传入的参数是预设的。
- 自动给相同类型属性的变量赋值
- 实体,属性,功能….
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
29attack_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
3
4
5
6
7
8
9
10class A:
def __init__(self,attribute1,attribute2):
#如果真正把属性传到实例,要把两个值和实例绑定:
self.a1 = attribute1
self.a2 = attribute2
#在本函数中可以直接调用,不加实例;
#外部调用attribute1,2时调用方式与公共相同相同;
#实例化时传入参数:
exm = A(attA,attB) - 方法: 类中的函数、功能;
self
: 代表实例本身,必须是方法中第一个参数; - 实例化:将类变为实体