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----->
'''
无__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----->
'''
相关文章推荐
- Python零基础入门十四之对象
- python面向对象入门:从代码复用开始
- python的类和对象---python入门学习(四)
- 16.2 Python入门之类对象和实例对象
- PYTHON面向对象入门
- Python轻松入门-37 自定义对象排序
- python-面向对象入门
- Python一天入门14:面向对象的编程1-对象
- python的类和对象---python入门学习(四)
- Python入门的36个例子 之 31 -> OOP – 属于类的变量和属于对象的变量
- python入门(二十八):面向对象之继承
- 基础入门_Python-模块和包.深入SQLAlchemy之事务回滚与反射还原对象?
- Python一天入门15:面向对象的编程2-类与对象的方法
- python入门:对象的建立和使用(不涉及继承)
- Python入门篇之对象类型
- Python入门篇之对象类型
- 类和对象:一些相关的BIF - 零基础入门学习Python040
- python学习之路-7 模块configparser/xml/shutil/subprocess以及面向对象初级入门
- 零基础入门学习Python(36)--类和对象:给大家介绍对象