您的位置:首页 > 编程语言 > Python开发

python入门之--类与对象

2018-02-21 23:13 369 查看
1, 定义类:class  类名
                无__init__(self)方法===================>    创建对象: 类名()
                有__init__(self)方法=====  无参   ========>     创建对象: 类名()
                                                   =====有参: *args ====>     创建对象: 类名(参数1, 参数2.....)
2,  类--定义方法, 添加属性:       【方法包括:一般方法,  特殊的__init__()】                
def fun(self):
     self.属性=默认值
#或者
def fun(self,形参):
     self.属性名=形参
初步练习:######定义类:创建对象,调用方法---后天加入属性、赋值
'''
class Dog:
def fun(self):
print("方法一")
d=Dog()
d.fun() #方法一

d.name="23"
print(d.name)#23
d.color="黑色"
print(d.color)#黑色
'''
'''
######定义类:创建对象,给属性赋值--预先定义属性,后天动态赋值
class Car:
def describe(self):
print("颜色是 %s"%self.color, "价格=%s"%self.price)
c=Car()
c.color="red"
c.price='$23423523'
c.describe() #颜色是 red, 价格=$23423523
'''
######定义类: 创建对象 __init__()加入属性并初始化赋值--固定值
'''
class Human:
def __init__(self):
self.name="张三"
self.age=23
print("对象初始化......")

def hello(self):
print("hello,this is a test word,name=%s, age=%s"%(self.name,self.age))

 def work(self):
pass
print("work....")
h=Human()
h.hello()     #对象初始化.....
      #hello,this is a test word,name=男,age=23
h2=Human()
h2.work()     #对象初始化......
#work....
'''
######定义类:创建对象 __init__()加入属性并初始化赋值--动态值
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
       
        def say(self):
print("my name is %s,age=%s"%(self.name,self.age))
p=Person("zs",23)
p.say() #my name is zs,age=23
进阶练习:对象的相互调用, 游戏【多个人】, 人【多个骰子】, 骰子【一个点数】,

需求:          游戏开始, 打印出各个玩家的骰子点数,  判断输赢           import random
################--骰子类--#################
class Dice:
def __init__(self):#属性:点数
self.num=0

def move(self):
self.num= random.randint(1,6) #产生1-6的整数
################--玩家类--#################
class Person:
def __init__(self,name,*dices):
self.name=name
self.score=0 #假定: 总点数为0
self.dices=dices#定义属性+赋值:【拥有三个骰子】

def shake(self):#假定:三个骰子 【人对骰子的操作】
for d in self.dices:#骰子产生随机数
d.move()

def print_all_dices(self): #打印三个骰子: 的点数
s0=self.dices[0].num
s1=self.dices[1].num

4000
s2=self.dices[2].num
self.score=s0+s1+s2#计算的总成绩, 判断输赢
print("%s----骰子点数是:[%s,%s,%s], 一共:%s"%(self.name, s0, s1, s2, self.score ) )
################--游戏类--#################
class Game:
def __init__(self,*persons):
self.persons=persons
self.max_score=0#该场次游戏的最大分数
self.winers=[] #存放所有赢家名字,考虑到平手,有多个人胜出

def start(self):
for per in self.persons:#遍历所有玩家
per.shake()
per.print_all_dices()
if per.score>self.max_score:#记录此次游戏:最大分数
self.max_score=per.score

def get_winers(self):#取出:所有玩家的---单次(三骰子)总分,比较大小
for per in self.persons:#遍历所有玩家
if per.score==self.max_score:
self.winers.append(per.name)#添加所有:赢家名字

name=self.winers.__str__().strip("[]").strip('')
print("赢家是:%s, 得分=%s\n"%(name,self.max_score))
self.max_score=0
self.winers.clear() #清空此次记录
###准备三个骰子, 给玩家
d1=Dice()
d2=Dice()
d3=Dice()

###调用game-->person-->dice
p=Person("张三",d1,d2,d3)
p2=Person("李四",d1,d2,d3)
p3=Person("王五",d1,d2,d3)
p4=Person("周六",d1,d2,d3)
game=Game(p,p2,p3,p4)

while True:
game.start()
game.get_winers()

option=input("是否继续:y?n----->")
if option=="n":
break

#运行结果
'''
张三----骰子点数是:[5,3,2], 一共:10
李四----骰子点数是:[4,2,6], 一共:12
王五----骰子点数是:[1,1,4], 一共:6
周六----骰子点数是:[1,5,4], 一共:10
赢家是:'李四', 得分=12

是否继续:y?n----->
张三----骰子点数是:[2,4,5], 一共:11
李四----骰子点数是:[4,5,1], 一共:10
王五----骰子点数是:[5,2,4], 一共:11
周六----骰子点数是:[1,4,4], 一共:9
赢家是:'张三', '王五', 得分=11

是否继续:y?n----->
张三----骰子点数是:[5,4,5], 一共:14
李四----骰子点数是:[4,6,5], 一共:15
王五----骰子点数是:[2,2,2], 一共:6
周六----骰子点数是:[2,3,1], 一共:6
赢家是:'李四', 得分=15

是否继续:y?n----->
'''
                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: