python学习基础第一阶段day11
python 属性全部语法
核心逻辑:拦截目标:保护数据
1. 读 + 写属性 快捷键:props + 回车
class Wife:
def init(self, age=0):
self.age = age
@property
def age(self):
return self.__age
@age.setter
def age(self, value):
self.__age = value
w01 = Wife(25)
print(w01.age)
2. 读 属性 快捷键:prop + 回车
class Wife:
def init(self):
# 数据从何而来,无所谓(可以从参数来、某个方法来、写死).
self.__age = 25
@property
def age(self):
return self.__age
w01 = Wife()
print(w01.age)
w01.age = 222
3. 写 属性 快捷键:prop + 回车
class Wife:
def init(self, age=0):
self.age = age
age = property()
@age.setter# age.setter(…)
def age(self, value):
self.__age = value
class Wife:
def init(self, age=0):
self.age = age
def age(self, value):
self.__age = value
age = property(None,age)
# w01 = Wife(25)
# print(w01.dict)
# print(w01.age)
设计角度讲
1. 定义:
(1) 分而治之将一个大的需求分解为许多类,每个类处理一个独立的功能。
(2) 变则疏之变化的地方独立封装,避免影响其他类。
(3) 高 内 聚类中各个方法都在完成一项任务(单一职责的类)。
(4) 低 耦 合 类与类的关联性与依赖度要低(每个类独立),让一个类的改变,尽少影响其他类。
2. 优势:便于分工,便于复用,可扩展性强。
# 类与类行为不同
# 对象与对象数据不同
# 需求:老张开车去东北
# 变化:老张、老李、老王… --> 数据不同
# 划船、骑车、飞机… --> 行为不同
# 西北、南北… --> 数据不同
写法1
# 语义:老张去东北创建一辆新车
# 老张无论去哪里,都会创建一辆新车
class Person:
def init(self, name=""):
self.name = name
def go_to(self,position):
print(self.name,“去”,position)
car = Car()
car.run()
class Car:
# 实例成员:对象.?
def run(self):
print(“汽车行驶”)
lz = Person(“老张”)
lz.go_to(“东北”)# 一辆新车
lz.go_to(“家”)# 又一辆新车
写法2
语义:老张开车自己的车去东北
class Person:
def init(self, name=""):
self.name = name
self.car = Car()
def go_to(self,position):print(self.name,"去",position)self.car.run()
class Car:
def run(self):
print(“汽车行驶”)
lz = Person(“老张”)
lz.go_to(“东北”)
lz.go_to(“家”)
写法3
# 语义:老张通过传递的参数,决定如何去东北.
class Person:
def init(self, name=""):
self.name = name
def go_to(self, vehicle, position):
print(self.name, “去”, position)
vehicle.run()
class Car:
def run(self):
print(“汽车行驶”)
lz = Person(“老张”)
bm = Car()
lz.go_to(bm, “东北”)
练习1:
"""需求:小明在银行取钱现象:人的钱多了, 银行的钱少了
"""class Person:def __init__(self, money):self.money = moneyclass Bank:def __init__(self, money):self.money = moneydef draw_money(self, person, value):self.money -= value # 银行钱少了person.money += value # 人钱多了xm = Person(0)
zsyh = Bank(100000)
zsyh.draw_money(xm, 5000)
print("小明的钱", xm.money)
print("银行的钱", zsyh.money)
练习2:
"""需求:玩家(攻击力)攻击敌人(血量),敌人受伤(减血)后可能死亡(播放死亡动画)
"""class Person:def __init__(self, name="", atk=0):self.name = nameself.atk = atkdef attack(self, enemy):enemy.damage(self.atk)class Enemy:def __init__(self, hp=0):self.hp = hpdef damage(self, atk):self.hp -= atkif self.hp <= 0:self.__death()def __death(self):print("播放死亡动画")xm = Person("关羽", 50)
xb = Enemy(50)
xm.attack(xb)
练习3:
"""张无忌教赵敏九阳神功赵敏教张无忌化妆张无忌上班挣了8000元赵敏上班挣了10000元
"""class Person:def __init__(self, name=""):self.name = namedef teach(self, person_other, skill):print(self.name, "教", person_other.name, skill)def work(self, salary):print(self.name, "上班挣了", salary, "元")zwj = Person("张无忌")
zm = Person("赵敏")zwj.teach(zm, "九阳神功")
zm.teach(zwj, "化妆")zwj.work(8000)
zm.work(10000)
python学习基础第一阶段day11相关推荐
- Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段
大家好,我是梦雅. \ 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. \ \ \ 阶段一:Python基础[ 初入江湖] \ Li ...
- python学习日记(第一周)
python学习日记(第一周) 前言: 无论出于什么目的,学个程序语言吧.之前学过一点点基础语法,然后就搁置了两年,日记仅作为个人记录,有问题还望不吝赐教 其实这玩意儿应该每次学一部分记录一部分的,好 ...
- Python学习-基础介绍
Python学习-基础介绍 Python基本语法介绍 变量 数据类型 列表 list 添加 删除 统计分析 切片器 set 集合 添加 判断是否存在 删除 数组 array 运算符 控制语句 if/e ...
- python学习之第一课时--初始python
python学习之第一课时--初始python Python前世今世 python是什么 python是一门多种用途的编程语言,时常在扮演脚本语言的角色 python流行原因 软件质量 提高开发者效率 ...
- 传智java测试题答案_传智播客Java基础第一阶段习题
关于java程序员面试的经典题目 传智播客Java基础第一阶段习题 一.单项选择题 1.Java源文件和编译后的文件扩展名分别为( ) A..class和 .java B..java和 .class ...
- Python学习的第一周
Python学习的第一周 一.初识Python Python的应用领域 目前Python在Web服务器应用开发.云基础设施开发.网络数据采集(爬虫).数据分析.量化交易.机器学习.深度学习.自动化测试 ...
- 掌握Python语法篇:核心编程能力基础第一阶段
就想问一下有多少是看到封面就点进来的,不过不要失望今天依旧会是收获满满的一天,记得点一下最后的五角星,哪怕是起灰也行啊,支持一下辣条哥啊 今天我们继续聊python 之前我们讲了python的输入和输 ...
- Python学习,第一课(基础知识,利用urllib库入门)
Python学习第一课(不怕失败,爬虫就是要爬点东西回来) 基本知识 第一课,第一个小爬虫 锁定目标 导入需要的库 良好的习惯 开始干活,做好失败的准备. 失败是成功他娘,下一课一定要搞到数据. 基本 ...
- Java学习总结第一阶段
day1(甘特图)预科阶段 甘特图:让工程项目变成可视化图表,也叫项目进度规划表. 一般由:任务名称.工期.开始时间.完成时间.前置任务.资源名称.日期组成 如下所示,资源名称那就是人的名字,前置任务 ...
最新文章
- python代码格式-pyhon代码设计格式指南
- python3下载教程-《Python3从入门到放弃》视频教程
- MATLAB实战系列(七)头脑风暴优化(BSO)算法求解旅行商问题(TSP)
- 【CyberSecurityLearning 7】AD域
- file android closed,Reading a json file in Android [closed]
- oracle中主键自增长,Oracle中给主键设置自增长
- Windows10如何彻底卸载MySQL
- 主流智能家居通信总线、无线、电力载波和以太网的基本介绍
- 接口测试工具--Postman安装
- Robo 3T下载安装和使用
- bzoj4094 luogu3097 最优挤奶
- 数据分析初试:“梧桐杯”中国移动大数据应用创新大赛 - 智慧城市赛道
- Rails图像上传:使用CarrierWave和Devise
- 程序员应该使用的键盘中英文切换设置
- word文件怎么另存
- c语言count的作用,C语言中count是什么意思?
- assertThat断言测试方法
- xmmi - 晨星半导体公司MSTAR平台
- Asterisk修改call file源代码(pbx_spool.c)以支持邀请PJSIP webrtc分机
- Linux系统文件服务
热门文章
- 为什么PHP在很多公司遭到弃用?
- 日期格式‘YYYY-MM-DD’中的BUG
- 2019年度区块链安全复盘总结
- PTA 直捣黄龙 (30 分)
- mysql声明存储过程_MySQL 声明变量及存储过程分析
- { errcode: 88, sub_code: “40000“, sub_msg: “access_token is blank“, errmsg: “ding talk error[subcode
- Molecular Psychiatry:海马及其相关网络在电休克抗抑郁中的机制研究
- java基础知识之注解、反射(一)
- 基于贝叶斯分类器的社区UGC反垃圾模型
- ComM(通信管理)和CanNm(network)