day07 object-oriented

Object-Oriented

People and dogs shootout

# 人狗大战
# 人-角色
    #属性
    # 名称 等级 血量 攻击力 性别 职业
def Person(name,hp,ad,sex,job,level=1):   # 角色的模板
    person_dic = {'name':name,'level':level,'hp':hp,'ad':ad,'sex':sex,'job':job}
    return person_dic
alex = Person('alex',100,5,'不详','乞丐')   # 角色
wusir = Person('wusir',200,6,'女','嫂子')
print(alex)
print(wusir)
# 狗-角色
def Dog(name,kind,hp,ad):
    dog_dic = {'name':name,'kind':kind,'hp':hp,'ad':ad}
    return dog_dic
dog1= Dog('旺财','teddy',2000,150)
print(dog1)
dog2 = Dog('二饼','哈士奇',10000,300)
print(dog2)
  • Modifications, additions action
def Person(name,hp,ad,sex,job,level=1):   # 角色的模板
    person_dic = {'name':name,'level':level,'hp':hp,'ad':ad,'sex':sex,'job':job}
    def attack(dog,Person):
        dog['hp'] -= person_dic['ad']
        print('%s攻击了%s,%s掉了%s点血'%(person_dic['name'],dog['name'],dog['name'],person_dic['ad']))
    return person_dic
alex = Person('alex',100,5,'不详','乞丐')   # 角色
wusir = Person('wusir',200,6,'女','嫂子')
print(alex)
print(wusir)

def Dog(name,kind,hp,ad):
    dog_dic = {'name':name,'kind':kind,'hp':hp,'ad':ad}
    def bite(dog,person):
        person['hp'] -= dog_dic['ad']
        print('%s咬了%s,%s掉了%s点血' % (dog_dic['name'], person['name'], person['name'], dog_dic['ad']))
    return dog_dic
dog1= Dog('旺财','teddy',2000,150)
print(dog1)
dog2 = Dog('二饼','哈士奇',10000,300)
print(dog2)
attack(alex,dong1)
bite(dog2,alex)
bite(alex,dong2)
  • Add Constraint
def Person(name,hp,ad,sex,job,level=1):   # 角色的模板
    person_dic = {'name':name,'level':level,'hp':hp,'ad':ad,'sex':sex,'job':job}
    def attack(dog):
        dog['hp'] -= person_dic['ad']
        print('%s攻击了%s,%s掉了%s点血'%(person_dic['name'],dog['name'],dog['name'],person_dic['ad']))
    person_dic['attack'] = attack #约束,attack方法只是人的方法
    return person_dic
alex = Person('alex',100,5,'不详','乞丐')   # 角色
wusir = Person('wusir',200,6,'女','嫂子')
print(alex)
print(wusir)

def Dog(name,kind,hp,ad):
    dog_dic = {'name':name,'kind':kind,'hp':hp,'ad':ad}
    def bite(person):
        person['hp'] -= dog_dic['ad']
        print('%s咬了%s,%s掉了%s点血' % (dog_dic['name'], person['name'], person['name'], dog_dic['ad']))
    dog_dic['bite'] = bite #约束,bite只能是狗的方法
    return dog_dic
dog1= Dog('旺财','teddy',2000,150)
print(dog1)
dog2 = Dog('二饼','哈士奇',10000,300)
print(dog2)
dog1['bite'](wusir)
alex['attack'](dog1)

#Person就是一个类,通过类创建出来的alex和wusir都是这个类的对象

Object-oriented syntax

# 程序中有多少个角色
# 每个角色有什么技能 有什么属性
# 所有的角色都是由一个模板创建的
# 我们甚至不关心程序的结果是什么

# 所有的属性 和 技能都 待在自己的角色模板中
# 能够一眼就看出程序的结构 -- 可读性好
# 能够更加方便的为角色添加技能或者属性  -- 可扩展性高

# 抽象
# 类 -- 角色模板 抽象的
# 通过类创建 对象 -- 角色 具体的
# 具体表现在所有的属性都具有了具体的值
# 为了一个类去创建的时候,给类创建很多抽象的属性名字,方法名字,但是具体的值都是在创造角色的过程中体现出来的
  • Exclusive grammar
# 类的命名以大写开头,第一个字母大写
# class 类
# def psersonType

class Person: #不能放参数
    def __init__(self,name,hp,ad,sex,job): #这里放参数,固定格式,init初始化函数,self生成一个内存空间,将值传到self
       self.username = name #self.username可以改变名字,但是name是值不能改变
       self.hp = hp
       self.ad = ad
       self.sex = sex
       self.job = job

alex = Person('alex',100,5,'不详','乞丐')   # 实例化
wusir = Person('wusir',200,6,'女','嫂子') #self创建各自的空间
print('-->',alex) #Alex = self
print(alex.username,wusir.username) 
print(alex.ad)
print(alex.sex)
print(alex.job)
# class后面跟类名创造一个类
# 类名() -->对象
class Dog:
   def __init__(self,name,kind,hp,ad):   # 初始化方法
      self.name = name
      self.kind = kind
      self.hp = hp
      self.ad = ad

旺财 = Dog('旺财','teddy',2000,300)

Guess you like

Origin www.cnblogs.com/yihutu/p/11391579.html