Python面向对象模板
-
面向对象
面向对象前戏
对象与类的创建
对象独有的数据
对象独有的功能
动静态方法
面向对象三大特性之继承
面向对象三大特性之封装
property伪装属性
面向对象三大特性之多态
面向对象之反射
面向对象魔法方法
元类简介
面向对象前戏
人狗大战
# 1.推导步骤1:想办法描述出人和狗>>>:字典
# p1 = {
# 'name': 'jason',
# 't_type': '猛男',
# 'attack_val': 800,
# 'life_val': 2000
# }
# d1 = {
# 'name': '小黑',
# 't_type': '田园犬',
# 'attack_val': 200,
# 'life_val': 8000
# }
# 2.推导步骤2:将表示人和狗的代码封装成函数 避免重复编写>>>:函数
# def get_person(name, p_type, attack_val, life_val):
# '''专门产生人'''
# person = {
# 'name': name,
# 'p_type': p_type,
# 'attack_val': attack_val,
# 'life_val': life_val
# }
# return person
# def get_dog(name, d_type, attack_val, life_val):
# '''专门产生狗'''
# dog = {
# 'name': name,
# 'd_type': d_type,
# 'attack_val': attack_val,
# 'life_val': life_val
# }
# return dog
# 3.定义人和狗彼此攻击的功能
# def person_attack(person_dict, dog_dict):
# '''人打狗'''
# print('当前狗的基本信息:%s' % dog_dict)
# dog_dict['life_val'] -= person_dict.get('attack_val') # 简单模拟
# print(
# f"人:{person_dict.get('name')} 打了狗:{dog_dict.get('name')} 掉血:{person_dict.get('attack_val')} 狗剩余血量为:{dog_dict.get('life_val')}")
# def dog_attack(dog_dict, person_dict):
# '''狗咬人'''
# print('当前人的基本信息:%s' % person_dict)
# person_dict['life_val'] -= dog_dict.get('attack_val') # 简单模拟
# print(
# f"狗:{dog_dict.get('name')} 咬了人:{person_dict.get('name')} 掉血:{dog_dict.get('attack_val')} 人剩余血量为:{person_dict.get('life_val')}")
# 4.人狗大战
# p1 = get_person('jason', '猛男', 8000, 10000)
# p2 = get_person('kevin', '菜鸡', 100, 1000)
# d1 = get_dog('小黑', '恶霸犬', 8888, 100000)
# d2 = get_dog('小黄', '泰迪犬', 100, 500)
# person_attack(p1, d1) # 人打狗
# print(d1)
# dog_attack(d2, p2) # 狗咬人
# print(p2)
# 5.核心矛盾(乱套)
# person_attack(d1, p1) # 狗调用了人的攻击方法
# dog_attack(p1, d2) # 人调用了狗的攻击方法
# 6.数据与功能相互绑定>>>:人打狗的动作只能人来调 ...
def get_person(name, p_type, attack_val, life_val):
'''专门产生人'''
# 人的功能
def person_attack(person_dict, dog_dict):
'''人打狗'''
print('当前狗的基本信息:%s' % dog_dict)
dog_dict['life_val'] -= person_dict.get('attack_val') # 简单模拟
print(
f"人:{person_dict.get('name')} 打了狗:{dog_dict.get('name')} 掉血:{person_dict.get('attack_val')} 狗剩余血量为:{dog_dict.get('life_val')}")
# 人的数据
person = {
'name': name,
'p_type': p_type,
'attack_val': attack_val,
'life_val': life_val,
'attack': person_attack
}
return person
def get_dog(name, d_type, attack_val, life_val):
'''专门产生狗'''
# 狗的功能
def dog_attack(dog_dict, person_dict):
'''狗咬人'''
print('当前人的基本信息:%s' % person_dict)