• 面向对象


    一、认识对象

      1.什么是对象?

      万物皆对象,桌子,板凳,木头等我们都可认为是对象。

      2.面向对象是什么?

      面向对象(Object Oriented,OO)是软件开发方法。是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

    二、类的介绍及与对象的联系

      类即类别,类型的意思。类是一系列对象的结合体。

      类的语法介绍:

      class 类的名称:

        # 类中的内容

      # 类的名称首字母要大写,我们可以称为大驼峰体

      创建对象的语法:

      class Person:

        pass

        # 创建对象

      d = Person()

      在现实生活中,先有对象再有类,

      在编程过程中,先有类再有对象。

    三、属性查找

      

      会先从自己的名称空间里找age,找不到则去类中找,类也找不到就找父类...最后都找不到就抛出异常.

       __init__方法介绍:

      __init__是初始化方法,其本质也是一个函数

      特点:创建类的对象时,会自动执行__init__方法,会自动将对象作为第一个参数传入,参数名称为self。特征是给对象赋初始值。

    四、绑定与非绑定对象的方法

      在默认情况下类中的方法都是对象绑定方法,特殊的地方在于当使用对象调用该函数时会自动传入对象本身,作为第一参数,当使用类名来调用时他就是一个普通函数,有几个参数就得传几个参数。

      类的绑定方法:

      类的绑定方法用@classmethod来装饰,特殊之处在于不管类还是对象调用,会自动传入类本身作为第一个参数。

      非绑定方法: 也叫静态方法,不需要访问类的数据,也不需要访问对象的数据。语法:@staticmethod

    五、对象交互练习

      模拟王者荣耀

    import random
    import time


    class Hero:
    def __init__(self, name, level, blood, att, q_hurt, w_hurt, e_hurt):
    # 简便写法
    lcs = locals()
    lcs.pop('self')
    self.__dict__.update(lcs)

    def attack(self, enemy):
    enemy.blood -= self.att
    print('%s对%s释放了普通攻击造成了%s的伤害 敌人剩余血量%s' % (self.name, enemy.name,self.att, enemy.blood))
    if enemy.blood < 0:
    print('%s被%s使用普通攻击击杀了' % (enemy.name, self.name))

    def Q(self, enemy):
    enemy.blood -= self.q_hurt
    print('%s 对%s释放了Q造成了%s的伤害 敌人剩余血量%s' % (self.name, enemy.name,self.att, enemy.blood))
    if enemy.blood <= 0:
    print('%s被%s使用q技能击杀了' % (enemy.name, self.name))


    def W(self, enemy):
    enemy.blood -= self.w_hurt
    print("%s对%s释放了W 造成了%s的伤害 敌人剩余血量%s" % (self.name, enemy.name, self.w_hurt, enemy.blood))
    if enemy.blood <= 0:
    print("%s被%s使用W技能击杀了" % (enemy.name, self.name))

    def E(self, enemy):
    enemy.blood -= self.e_hurt
    print('%s 对%s释放了E造成了%s的伤害 敌人剩余血量%s' % (self.name, enemy.name,self.att, enemy.blood))
    if enemy.blood <= 0:
    print('%s被%s使用e技能击杀了' % (enemy.name, self.name))


    h1 = Hero('亚瑟', 20, 34, 56, 78, 90, 900)
    h2 = Hero('鲁班', 26, 300, 59, 100, 600, 90)
    h3 = Hero('妲己', 300, 500, 56, 78, 40, 900)
    h4 = Hero('铠', 350,600, 60, 78, 100, 900)

    # h1.attack(h2)
    # h2.Q(h1)
    # h2.W(h1)
    # h2.E(h1)
    # 从字典中随机拿出一个值
    def random_hero(heros):
    hero_index = random.randint(1, len(heros))
    return heros[hero_index]



    while True:
    # 把所有的攻击方法都放在字典里,为了随机取出一个
    funcs = {1: Hero.Q, 2: Hero.W, 3: Hero.E, 4: Hero.attack}
    func_index = random.randint(1, 4)
    func = funcs[func_index]

    # 把所有的英雄方法装到字典里,为了随机取出一个
    heros = {1: h1, 2: h2, 3: h3, 4: h4}
    hero = random_hero(heros)

    # 剩余的英雄们
    other_heros = {}
    new_index = 1
    for k, v in heros.items():
    if v != hero:
    other_heros[new_index] = v
    new_index += 1
    # 从剩余的英雄中随机挑出一个英雄来挨打
    enemy = random_hero(other_heros)

    # 打他
    func(hero, enemy)
    if enemy.blood <= 0:
    break
    time.sleep(1)

      

    生前无需久睡,死后自会长眠,努力解决生活中遇到的各种问题,不畏将来,勇敢面对,加油,你是最胖的,哈哈哈
  • 相关阅读:
    .net从后台返回js的提示框
    使用IntelliTrace的独立收集器帮助测试应用程序
    NuGet笔记
    使用.dmp+vs分析异常
    windbg笔记
    C# 删除文件、文件到到回收站及异常判断
    .Net利用反射调用DLL时,被调用DLL引用其它库问题
    C#中设置窗口圆角样式
    C# 中引用IHTMLDocument2
    c# 单实例运行
  • 原文地址:https://www.cnblogs.com/panshao51km-cn/p/11240293.html
Copyright © 2020-2023  润新知