• 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)
    
  • 相关阅读:
    使用EFCore连接现有数据库
    C#面试题总结
    xamarin学习--发布apk安装包
    xamarin学习--导航参数注意事项
    centos8 安装 gitlab
    mvc添加全局过滤器
    Windows平台查看端口占用情况
    asp.net core cli---创建一个不启用https的项目
    asp.net core cli
    启动nuxt项目报错WARN node unsupported "node@v8.9.3" is incompatible with chalk@^4.1.0, expec...
  • 原文地址:https://www.cnblogs.com/yihutu/p/11391579.html
Copyright © 2020-2023  润新知