面向对象编程基础
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)
# 王者农药
# 人机对战
# 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()
---------------------------------------------------------------------------------------------------------------------------------
"""
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