zoukankan      html  css  js  c++  java
  • day07 面向对象

    面向对象

    人狗大战

    # 人狗大战
    # 人-角色
        #属性
        # 名称 等级 血量 攻击力 性别 职业
    
    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)
    
    • 改进,添加动作
    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)
    
    • 添加约束
    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都是这个类的对象
    

    面向对象语法

    # 程序中有多少个角色
    # 每个角色有什么技能 有什么属性
    # 所有的角色都是由一个模板创建的
    # 我们甚至不关心程序的结果是什么
    
    # 所有的属性 和 技能都 待在自己的角色模板中
    # 能够一眼就看出程序的结构 -- 可读性好
    # 能够更加方便的为角色添加技能或者属性  -- 可扩展性高
    
    # 抽象
    # 类 -- 角色模板 抽象的
    # 通过类创建 对象 -- 角色 具体的
    # 具体表现在所有的属性都具有了具体的值
    # 为了一个类去创建的时候,给类创建很多抽象的属性名字,方法名字,但是具体的值都是在创造角色的过程中体现出来的
    
    • 专属语法
    # 类的命名以大写开头,第一个字母大写
    # 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)
    
  • 相关阅读:
    1005: [HNOI2008]明明的烦恼
    1006: [HNOI2008]神奇的国度
    1007: [HNOI2008]水平可见直线
    1011: [HNOI2008]遥远的行星
    1025: [SCOI2009]游戏
    HTTP1.0和HTTP1.1的区别
    各排序算法的时间复杂度和空间复杂度
    换钱最少货币数
    矩阵的最小路径和
    背包问题
  • 原文地址:https://www.cnblogs.com/yihutu/p/11391579.html
Copyright © 2011-2022 走看看