python入门之--类与对象

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
		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----->
'''

                            

猜你喜欢

转载自blog.csdn.net/eyeofeagle/article/details/79344751
今日推荐