(08)-Python3之--类和对象
1.定义
类:类是抽象的,一类事物的共性的体现。 有共性的属性和行为。
对象:具体化,实例化。有具体的属性值,有具体做的行为。
一个类 对应N多个对象。
类包含属性以及方法。
class 类名:
属性
方法
定义一个类:
class Preson:
def eat(self):
print("正在吃饭");
def sleep(self):
print("正在睡觉")
2.类
2.1命名
类名:符合标识符的规定但是一般是每个单词的首字母大写。(驼峰命名)
2.2创建对象
属性写在类外的情况,就是通过对象.属性,对象.方法()的方法调用
对象的三要素:属性(对象是什么)、方法(对象能做什么)、事件(对象如何响应)
相互关系:类是对象的抽象,对象是类的实例,类是一种抽象事物的分类,对象是一种实例
2.3属性
概念:用于访问类字段的成员;
属性用途:保证数据的安全,作数据的验证;
例如:学生有哪些属性(昵称、学号、性别、年龄、班级、联系方式、城市)
对象属性的两种创建方式:
# self对象的载体 def __int__(self, name, age):
# 创建对象属性
self.name = name
self, age = age
2.4初始化方法
在创建类的实例的时候,会自动调用这个方法,一般是用户对实例属性初始化
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
print("实例化类时,init方法就被调用了") p = Person("tom", 22)
print(p.name)
print(p.age) 结果:
实例化类时,init方法就被调用了
tom
22
2.5 Python中私有化特性
为了让外部无法访问属性或方法,只要在名字前面加上双下划线即可
对属性进行私有化 :__属性
对方法进行私有化:__方法()
class Secret:
__name = 'yoda' # 加上双下划线私有化属性 def get_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退出。
最后结束的时候输出结果 角色赢几局 电脑赢几局,平局几次 游戏结束
""" import random class GussesGame:
datas = {"1": "剪刀", "2": "石头", "3": "布"} def __init__(self):
self.user_game_result = [0, 0, 0] # win,lose,tie # 选择角色
def select_role(self, role_index):
roles = {"1": "曹操", "2": "张飞", "3": "刘备"}
if str(role_index) in roles.keys():
print("您选择的角色为{}".format(roles[str(role_index)])) # 角色出拳
def _role_finger_punch(self):
number = input("请出拳(1剪刀 2石头 3布),出数字即可:")
if number.isdigit() and number in self.datas.keys():
print("角色出拳为:{}".format(self.datas[str(number)]))
return int(number)
else:
print("角色出拳错误!!角色可出拳仅限为 1剪刀 2石头 3布") # 电脑出拳
def _computer_finger_punch(self):
number = random.randint(1, 3)
if str(number) in self.datas.keys():
print("电脑出拳为:{}".format(self.datas[str(number)]))
return number # 人机对战
def battle(self):
# 用户出拳
role_number = self._role_finger_punch()
# 电脑出拳
computer_number = self._computer_finger_punch()
# PK
if computer_number is not None and role_number is not None:
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":
return True
else:
return False # 战果显示
def show_user_game_result(self):
print("角色在本轮游戏当中的战果为:{}胜{}败{}平局".format(*self.user_game_result)) if __name__ == "__main__":
# 游戏 开始
one = GussesGame()
# 选角
one.select_role(1)
while True:
# 人机battle
is_go_on = one.battle()
# 继续battle吗
if is_go_on is False:
print("不玩了,拜拜!!")
break # battle的最终结果
one.show_user_game_result()
(08)-Python3之--类和对象的更多相关文章
- python3.x 类和对象
python同样支持类和对象.在python3.x中没有了经典类,只有新式类,默认创建的就是新式类.具体的新式类与经典类的不同在python3.x中已经没有意义了. 类的定义和实例化 python定义 ...
- 新手C#类、对象、字段、方法的学习2018.08.05
类:具有相似属性和方法的对象的集合,如“人”是个类. 对象(实例):对象是具体的看得见摸得着的,如“张三”是“人”这个类的对象.(new Person()开辟了堆空间中,=开辟了栈空间,变量P存放在该 ...
- [Java初探08]__简单学习Java类和对象
前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...
- python3 类、对象的基础概念
类:具有相同特性和方法的抽象概念称为类 对象:从类中具体描述的一个事物称为对象 类和对象的关系:类是对象的抽象概念,对象是类的具体实例 class test001: #创建类 def __init__ ...
- day24:面向对象设计与面向对象编程、类和对象
一.三大编程范式: 面向过程: 面向函数: 面向对象: 二.程序的进化论: 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定 ...
- Atitit. 类与对象的存储实现
Atitit. 类与对象的存储实现 1. 类的结构和实现1 2. 类的方法属性都是hashtable存储的.2 3. Class的分类 常规类(T_CLASS), 抽象类(T_ABSTRACT T_C ...
- python的类和对象——进阶篇
写在前面的话 终于,又到了周五.当小伙伴们都不再加班欢欢喜喜过周末的时候,我刚刚写完这一周的游戏作业,从面对晚归的紧皱眉头到现在的从容淡定,好像只有那么几周的时间.突然发现:改变——原来这么简单.很多 ...
- JS创建类和对象(好多方法哟!)
http://www.cnblogs.com/tiwlin/archive/2009/08/06/1540161.html 这是别人写的~~~我借来看看 JavaScript 创建类/对象的几种方式 ...
- DELPHI学习---类和对象(五篇)
Classes and objects(类和对象) 类(或者类类型)定义了一个结构,它包括字段(也称为域).方法和属性:类的实例叫做对象:类的字段.方法和属性被称为它的部件(components)或成 ...
随机推荐
- HCIP --- BGP 总结
AS:自治系统 --逻辑管理域(例如移动.电信.联通),AS号范围:0-65535,其中,1-64511:公有AS,64512-65535:私有AS IGP:内部网关协议,在一个AS之内传递的路由协 ...
- 使用CodeSmith编写ADO.Net三层
说明 自本文发布日起,发现和完善了编写的CodeSmith几处代码. 故,不再直接在文章添加代码,最新代码参见GitHub https://github.com/catbiscuit/CodeSmit ...
- 【自定义轮播图】微信小程序自定义轮播图无缝滚动
先试试效果,可以通过设置参数调整样式 微信小程序中的轮播图可以直接使用swiper组件,如下: <swiper indicator-dots="{{indicatorDots}}&qu ...
- 网易云解锁无版权PC&安卓版
前言 又是一个不太忙碌的周末 好吧,其实智能车有很多东西要做,其他也有很多东西要处理,但我想咸鱼一个早上. 闲着没事去吾爱破解上翻了翻,找找音乐软件,因为Listen 1有个音源挂了,应该是咪咕的,导 ...
- Java日常开发的21个坑,你踩过几个?
前言 最近看了极客时间的<Java业务开发常见错误100例>,再结合平时踩的一些代码坑,写写总结,希望对大家有帮助,感谢阅读~ 1. 六类典型空指针问题 包装类型的空指针问题 级联调用的空 ...
- 技术选型关于redis客户端选择
redis作为分布式缓存框架的首选 相信已经毋庸置疑.能高效.合理的使用好它 必定能提升系统的可用性,高性能.高吞吐量的保障.但选择一个客户端,充分发挥它的能力,就是一个选型问题.现在市场上能选择 ...
- Beta冲刺——第六天
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...
- 2020 年度编程语言排行榜出炉!C 语言称霸,Java 遭遇滑铁卢…….
最近,TIOBE 发布了过去一年的编程语言排行榜: 数据来源TIOBE: https://www.tiobe.com/tiobe-index/ TIOBE介绍: TIOBE编程语言索引是编程语言流行程 ...
- 关于echarts中的noDataLoadingOption——loading动画的问题
在最近的一个项目中用到echarts这个插件,其中关于noDataLoadingOption配置项的问题让我困惑了好长时间.经过蛋疼的查找下,终于搞明白是版本的原因. 且看官网的介绍:ECharts, ...
- 用python+sklearn(机器学习)实现天气预报数据 模型和使用
用python+sklearn机器学习实现天气预报 模型和使用 项目地址 系列教程 0.前言 1.建立模型 a.准备 引入所需要的头文件 选择模型 选择评估方法 获取数据集 b.建立模型 c.获取模型 ...