zoukankan      html  css  js  c++  java
  • 面向对象编程基础

      

    1、类和对象

      类是对象的蓝图和模板,而对象是类的实例;类是抽象的概念,而对象是具体的东西;在面向对象编程的世界中,一切皆为对象,对象都有属性和行为,每个对象都是独一无二的,而且对象一定属于某个类(型)。

    2、函数的写法

     

    3、定义类  

    1)定义类只有两步:
      1. 使用标识符class ClassName(object); # object 不是一个参数,在Python2中这个object一定要写,但是在Python3中可写可不写(默认就继承了object)
      2. 重写__init__函数,但是需要记住,一定要打上一个"self"的标记,因为后面会学到继承,当在继承的时候可能就会有函数名相撞的情况.,或者说,类中会含有多个变量,多个函数,那么就需要使用"self"手段去区分;
      3. 类的传参是在__init__函数中的.需要注意的是,如果你的参数可能被多个函数都使用,那么,你才在__init__函数中去定义参数。

    案例一:

    ------------------------------------------------------------------------------------

    # 输入两个数字,打印这两个数的
    # 差,和、乘、除、整除、取余、平方
    class YUantingting(object):
      def __init__(self,a,b):
        print(a+b,a-b,a*b)

    YUantingting(1,2)

    -----------------------------------------------------------------------------------

    2)在Python中可以使用class关键字定义类,然后在类中通过之前学习过的函数来定义方法,这样就可以将对象的动态特征描述出来,代码如下所示:

    3)在类中,一切的变量和函数都要印记(self),如下所示:

    4)王者荣耀案例

    # 王者农药
    # 人机对战
    # 1.点击人机,多人对战,对战的按钮(输入)
    # 2.挑选人物(典韦,赵云,鲁班)
    # 3.显示战力,防御
    # 4.人物确定,随机出1个人机,包括战力,名字...等信息显示
    # 5.输入开始按钮...
    # 6.进入加载页面...

    ----------------------------------------------------------------------------------------------------------------------------

    import matplotlib.pyplot as plt # plt 用于显示图片
    import matplotlib.image as mpimg # mpimg 用于读取图片
    import numpy as np

    wangzhe = mpimg.imread('wangzhe.jpg') # 读取和代码处于同一目录下的 lena.png
    # 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理
    luban = mpimg.imread('luban.jpg')
    dianwei = mpimg.imread('dianwei.jpg')
    zhaoyun = mpimg.imread('zhaoyun.jpg')
    jiazai = mpimg.imread('jiazai.jpg')
    wangzhe.shape #(512, 512, 3)
    dianwei.shape #(512, 512, 3)
    zhaoyun.shape #(512, 512, 3)
    zhaoyun.shape #(512, 512, 3)
    jiazai.shape #(512, 512, 3)
    plt.imshow(wangzhe) # 显示图片
    plt.axis('off') # 不显示坐标轴
    plt.show()
    class Wangzhe(object):
      def __init__(self):
        pass
      def renji(self):
        print('请选择人机或者多人对战!')
        res = input('输入>>')
        print("您选的是",res)
        self.res=res
      def tiaoxuan(self):
        print('请从典韦、赵云、鲁班中挑选一个人物!')
        ren = input('输入>>')
        print("您选的是",ren)
        self.ren=ren
      def xianshizhanli(self):
        if self.ren == '典韦':
          plt.imshow(dianwei) # 显示图片
          plt.axis('off') # 不显示坐标轴
          plt.show()
          print("您选择的典韦战力为10000,防御力为5000")
        elif self.ren == '赵云':
          plt.imshow(zhaoyun) # 显示图片
          plt.axis('off') # 不显示坐标轴
          plt.show()
          print("您选择的赵云战力为20000,防御力为2000")
        else:
          plt.imshow(luban) # 显示图片
          plt.axis('off') # 不显示坐标轴
          plt.show()
          print("您选择的鲁班战力为15000,防御力为3500")
      def renwuqueding(self):
        print("您的人物以确定,现在系统随机为您生成对战玩家")
        q = np.random.choice(['典韦','赵云','鲁班'])
        print('您的对手为>>',q)
      def kaishi(self):
        print("请输入开始")
        w = input('输入>>')
        if w == "开始":
          print("输入正确")
        else:
          print("输入有误!")
      def jiazai(self):
        print('正在加载,请耐心等待!')
        plt.imshow(luban) # 显示图片
        plt.axis('off') # 不显示坐标轴
        plt.show()


    WZ = Wangzhe()
    WZ.renji()
    WZ.tiaoxuan()
    WZ.xianshizhanli()
    WZ.renwuqueding()
    WZ.kaishi()
    WZ.jiazai()

    ---------------------------------------------------------------------------------------------------------------------------------

    4、if条件:

    """
      if 条件:
        执行体
      elif 条件:
        执行体
      else:
        如果if不走.则走else
    """

    class Joker(object):
      def __init__(self,age):
        if 18<= age <=20:
          print('英语4级')
        elif 20< age <= 50:
          print('爱情片')
        else:
          print('京剧')

    Joker(18)

    --------------------------------------------------------------------------

    案例二:

    定义3个函数,第一个函数:年龄判断 <18 ,18<40,40>
          第二个函数:性别判断: 男,女,未知
          第三个函数:打印 (年轻,中年,老年)和性别

    案例三:

    if...else print打印两个结果,使用for...else

  • 相关阅读:
    机器学习学习记录【持续更新】——pandas
    机器学习学习记录【持续更新】——降低损失
    Robcup2D足球学习记录【2020.01.30】
    Robcup2D足球学习记录【2020.01.18】
    Robcup2D足球学习记录【2020.01.14】
    javacript window对象
    mybatis if 语句嵌套
    hashMap 和 linkedHashMap 的区别和联系
    var let const的一些区别
    Jetty9开发(1)
  • 原文地址:https://www.cnblogs.com/honey-2019/p/11318995.html
Copyright © 2011-2022 走看看