面向对象编程基础

  

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

 

posted @ 2019-08-08 08:35  honey0230  阅读(129)  评论(0编辑  收藏  举报