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

    # 基础数据类型
    # 函数
        # 基础
        # 装饰器  (进阶可以放着)
        # 迭代器和生成器 (生成器 需要熟练掌握yield)
        # 递归函数(能看懂)
        # 内置函数和匿名函数 (内置函数中的红色、黄色函数要记住)
    # 模块 —— 现成的东西 直接拿来用
    # 包 —— 相对导入(放着)
    # 正则表达式 —— 至少掌握元字符和量词 网站上的那些常用正则表达式要看懂
    # 异常处理 —— 会用
    # dict
    # d = {'k':'v'}
    #
    # list
    # [1,2]
    # print(dict)   # 类
    # print(d)      # 对象
    
    # 自定义类
    # def 函数名():
    #     pass
    
    # class 类名:
    #     属性 = 'a'
    #
    # print(类名.属性)
    # 类名的作用 就是操作属性 查看属性
    
    # class Person:                 # 类名
    #     country = 'China'         # 创造了一个只要是这个类就一定有的属性
    #                                # 类属性 静态属性
    #     def __init__(self,*args):  # 初始化方法,self是对象,是一个必须传的参数
    #         # self就是一个可以存储很多属性的大字典
    #         self.name = args[0]   # 往字典里添加属性的方式发生了一些变化
    #         self.hp = args[1]
    #         self.aggr = args[2]
    #         self.sex = args[3]
    #
    #     def walk(self,n):         # 方法,一般情况下必须传self参数,且必须写在第一个
    #                               # 后面还可以传其他参数,是自由的
    #         print('%s走走走,走了%s步'%(self.name,n))
    #
    # # print(Person.country)        # 类名 可以查看类中的属性,不需要实例化就可以查看
    # alex = Person('狗剩儿',100,1,'不详')  # 类名还可以实例化对象,alex对象   # 实例化
    # # print(alex.__dict__) # 查看所有属性
    # print(alex.name)  # 查看属性值
    # # print(alex.hp)  # 查看属性值
    # alex.walk(5)    # Person.walk(alex,5)  # 调用方法 类名.方法名(对象名)
    
    # print(Person.__dict__['country'])
    # Person.__dict__['country'] = '印度'
    # print(alex.__dict__['name'])
    # alex.__dict__['name'] = '二哥'
    # print(alex.__dict__)
    # print(alex.name)
    # print(alex.name)
    # alex.name = '二哥'
    # alex.__dict__['name'] = '二哥'
    # alex.age = 83
    # print(alex.__dict__)
    # print(alex.name)
    
    # 对象 = 类名()
    # 过程:
        # 类名() 首先 会创造出一个对象,创建了一个self变量
        # 调用init方法,类名括号里的参数会被这里接收
        # 执行init方法
        # 返回self
    # 对象能做的事:
        # 查看属性
        # 调用方法
        # __dict__ 对于对象的增删改查操作都可以通过字典的语法进行
    # 类名能做的事:
        # 实例化
        # 调用方法 : 只不过要自己传递self参数
        # 调用类中的属性,也就是调用静态属性
        # __dict__ 对于类中的名字只能看 不能操作
    
    # 人狗大战
    def Dog(name,blood,aggr,kind):
        dog = {
            'name': name,
            'blood': blood,  # 血量
            'aggr': aggr,  # 攻击力
            'kind': kind,
        }
        def bite(person):
            person['blood'] -= dog['aggr']
            print('%s被咬了,掉了%s的血' % (person['name'], dog['aggr']))
        dog['bite'] = bite
        return dog
    
    def Person(name,blood,aggr,sex):
        person = {
            'name' : name,
            'blood': blood,   # 血量
            'aggr': aggr,      # 攻击力
            'sex':sex,
        }
        def attack(dog):
            dog['blood'] -= person['aggr']
            print('%s被打了,掉了%s的血' % (dog['name'], person['aggr']))
        person['attack'] = attack
        return person
    
    # 代码精简了 方便增加人物 方便修改 人物更加规范  —— 人模子
    
    
    
    jin = Dog('金老板',1000,100,'teddy')
    alex = Person('狗剩儿',100,1,'不详')
    # nezha = Person('哪吒',200,2,'不详')
    print(jin)
    jin['bite'](alex)
    alex['attack'](jin)
    # Dog函数和Person函数 都是定义了一类事物
    # 直到调用了函数,赋值了之后才真的有了一个实实在在的人或狗
    
    
    # 面向对象编程
    # 所谓模子 就是 类 抽象的 我能知道有什么属性 有什么技能 但不能知道属性具体的值
    # jin alex nezha 就是对象 有具体的值,属性和技能都是根据类规范的
    class Dog:
        def __init__(self,name,blood,aggr,kind):
            self.name = name
            self.hp = blood
            self.aggr = aggr
            self.kind = kind
        def bite(self,person):
            # 狗咬人,人掉血
            person.blood -= self.aggr
    
    class Person:
        def __init__(self,name,blood,aggr,sex):
            self.name = name
            self.blood = blood
            self.aggr = aggr
            self.sex = sex
        def attack(self,dog):
            dog.hp -= self.aggr
            if dog.hp <= 0:
                print('%s打了%s,%s被打死了,扑街~~~'%(self.name,dog.name,dog.name))
            else:
                print('%s打了%s,掉了%s血'%(self.name,dog.name,self.aggr))
    
    jin = Dog('金老板',100,20,'teddy')
    # print(jin.name)
    alex = Person('alex',999,998,'不详')
    jin.bite(alex)   # Dog.bite(jin,alex)
    print(alex.blood)
    # alex attack
    alex.attack(jin)  # Person.attack(alex,jin)
    print(jin.hp)
  • 相关阅读:
    loaded some nib but the view outlet was not set
    指标评比
    IOS DEVELOP FOR DUMMIES
    软件测试题二
    javascript select
    DOM节点类型详解
    mysql操作
    UVA 10055
    solutions for 'No Suitable Driver Found For Jdbc'
    解决git中文乱码问题
  • 原文地址:https://www.cnblogs.com/wujunjie-sir/p/9240157.html
Copyright © 2011-2022 走看看