python3类和对象_(08)-Python3之--类和对象

1.定义

类:类是抽象的,一类事物的共性的体现。  有共性的属性和行为。

对象:具体化,实例化。有具体的属性值,有具体做的行为。

一个类 对应N多个对象。

类包含属性以及方法。

class类名:

属性

方法

定义一个类:

classPreson:defeat(self):print("正在吃饭");defsleep(self):print("正在睡觉")

2.类

2.1命名

类名:符合标识符的规定但是一般是每个单词的首字母大写。(驼峰命名)

2.2创建对象

属性写在类外的情况,就是通过对象.属性,对象.方法()的方法调用

对象的三要素:属性(对象是什么)、方法(对象能做什么)、事件(对象如何响应)

相互关系:类是对象的抽象,对象是类的实例,类是一种抽象事物的分类,对象是一种实例

2.3属性

概念:用于访问类字段的成员;

属性用途:保证数据的安全,作数据的验证;

例如:学生有哪些属性(昵称、学号、性别、年龄、班级、联系方式、城市)

对象属性的两种创建方式:

#self对象的载体

def __int__(self, name, age):#创建对象属性

self.name =name

self, age= age

2.4初始化方法

在创建类的实例的时候,会自动调用这个方法,一般是用户对实例属性初始化

classPerson:def __init__(self, name, age):

self.name=name

self.age=ageprint("实例化类时,init方法就被调用了")

p= Person("tom", 22)print(p.name)print(p.age)

结果:

实例化类时,init方法就被调用了

tom22

2.5 Python中私有化特性

为了让外部无法访问属性或方法,只要在名字前面加上双下划线即可

对属性进行私有化 :__属性

对方法进行私有化:__方法()

classSecret:__name = 'yoda' #加上双下划线私有化属性

defget_name(self):return self.__name

def __secret(self): #私有化方法

print("can't find")

3.类的语法

语法:

class类名:#属性 - 变量

#行为 - 函数

def行为1(self):#self是我 self是指的实例化对象本身。定义的时候不知道对象到底是谁,用self

self.属性

self.行为N#初始化 - 在实例化的同时,执行初始化工作。没有return的用法。

def __init__(self,[参数1,参数2.。])### 初始化工作

###

#具体化实例化

实例名 =类名([参数1,参数2.。。])#通过实例名称来访问实例的属性、做行为

实例名.属性

实例名.行为

实战例子:

"""需求:

人和机器猜拳游戏写成一个类,有如下几个函数:

1)函数1:选择角色1 曹操 2张飞 3 刘备

2)函数2:角色猜拳1剪刀 2石头 3布 玩家输入一个1-3的数字

3)函数3:电脑出拳 随机产生1个1-3的数字,提示电脑出拳结果

4)函数4:角色和机器出拳对战,对战结束后,最后出示本局对战结果...赢...输。

5)函数5:显示整个游戏过程中,角色赢几局 电脑赢几局,平局几次。

一次猜拳结束后,要提示用户是否继续?按y继续,按n退出。

最后结束的时候输出结果 角色赢几局 电脑赢几局,平局几次 游戏结束"""

importrandomclassGussesGame:

datas= {"1": "剪刀", "2": "石头", "3": "布"}def __init__(self):

self.user_game_result= [0, 0, 0] #win,lose,tie

#选择角色

defselect_role(self, role_index):

roles= {"1": "曹操", "2": "张飞", "3": "刘备"}if str(role_index) inroles.keys():print("您选择的角色为{}".format(roles[str(role_index)]))#角色出拳

def_role_finger_punch(self):

number= input("请出拳(1剪刀 2石头 3布),出数字即可:")if number.isdigit() and number inself.datas.keys():print("角色出拳为:{}".format(self.datas[str(number)]))returnint(number)else:print("角色出拳错误!!角色可出拳仅限为 1剪刀 2石头 3布")#电脑出拳

def_computer_finger_punch(self):

number= random.randint(1, 3)if str(number) inself.datas.keys():print("电脑出拳为:{}".format(self.datas[str(number)]))returnnumber#人机对战

defbattle(self):#用户出拳

role_number =self._role_finger_punch()#电脑出拳

computer_number =self._computer_finger_punch()#PK

if computer_number is not None and role_number is notNone:if (role_number, computer_number) in [(1, 3), (2, 1), (3, 2)]:print("恭喜,你赢了!一统江湖!")

self.user_game_result[0]+= 1

elif role_number ==computer_number:print("平局!实力不相上下!")

self.user_game_result[2] += 1

else:print("噢嗬!你败了!手下败将,敢不敢再来一局!")

self.user_game_result[1] += 1

else:print("人机猜拳失败!!原因是某一方出拳不符合要求!")#是否继续玩

is_go_on = input("还没尽兴?是否继续?按y继续,按n退出。")if is_go_on == "y":returnTrueelse:returnFalse#战果显示

defshow_user_game_result(self):print("角色在本轮游戏当中的战果为:{}胜{}败{}平局".format(*self.user_game_result))if __name__ == "__main__":#游戏 开始

one =GussesGame()#选角

one.select_role(1)whileTrue:#人机battle

is_go_on =one.battle()#继续battle吗

if is_go_on isFalse:print("不玩了,拜拜!!")break

#battle的最终结果

one.show_user_game_result()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值