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相关推荐

  1. Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段

    大家好,我是梦雅. \ 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. \ \ \ 阶段一:Python基础[ 初入江湖] \ Li ...

  2. python学习日记(第一周)

    python学习日记(第一周) 前言: 无论出于什么目的,学个程序语言吧.之前学过一点点基础语法,然后就搁置了两年,日记仅作为个人记录,有问题还望不吝赐教 其实这玩意儿应该每次学一部分记录一部分的,好 ...

  3. Python学习-基础介绍

    Python学习-基础介绍 Python基本语法介绍 变量 数据类型 列表 list 添加 删除 统计分析 切片器 set 集合 添加 判断是否存在 删除 数组 array 运算符 控制语句 if/e ...

  4. python学习之第一课时--初始python

    python学习之第一课时--初始python Python前世今世 python是什么 python是一门多种用途的编程语言,时常在扮演脚本语言的角色 python流行原因 软件质量 提高开发者效率 ...

  5. 传智java测试题答案_传智播客Java基础第一阶段习题

    关于java程序员面试的经典题目 传智播客Java基础第一阶段习题 一.单项选择题 1.Java源文件和编译后的文件扩展名分别为( ) A..class和 .java B..java和 .class ...

  6. Python学习的第一周

    Python学习的第一周 一.初识Python Python的应用领域 目前Python在Web服务器应用开发.云基础设施开发.网络数据采集(爬虫).数据分析.量化交易.机器学习.深度学习.自动化测试 ...

  7. 掌握Python语法篇:核心编程能力基础第一阶段

    就想问一下有多少是看到封面就点进来的,不过不要失望今天依旧会是收获满满的一天,记得点一下最后的五角星,哪怕是起灰也行啊,支持一下辣条哥啊 今天我们继续聊python 之前我们讲了python的输入和输 ...

  8. Python学习,第一课(基础知识,利用urllib库入门)

    Python学习第一课(不怕失败,爬虫就是要爬点东西回来) 基本知识 第一课,第一个小爬虫 锁定目标 导入需要的库 良好的习惯 开始干活,做好失败的准备. 失败是成功他娘,下一课一定要搞到数据. 基本 ...

  9. Java学习总结第一阶段

    day1(甘特图)预科阶段 甘特图:让工程项目变成可视化图表,也叫项目进度规划表. 一般由:任务名称.工期.开始时间.完成时间.前置任务.资源名称.日期组成 如下所示,资源名称那就是人的名字,前置任务 ...

最新文章

  1. python代码格式-pyhon代码设计格式指南
  2. python3下载教程-《Python3从入门到放弃》视频教程
  3. MATLAB实战系列(七)头脑风暴优化(BSO)算法求解旅行商问题(TSP)
  4. 【CyberSecurityLearning 7】AD域
  5. file android closed,Reading a json file in Android [closed]
  6. oracle中主键自增长,Oracle中给主键设置自增长
  7. Windows10如何彻底卸载MySQL
  8. 主流智能家居通信总线、无线、电力载波和以太网的基本介绍
  9. 接口测试工具--Postman安装
  10. Robo 3T下载安装和使用
  11. bzoj4094 luogu3097 最优挤奶
  12. 数据分析初试:“梧桐杯”中国移动大数据应用创新大赛 - 智慧城市赛道
  13. Rails图像上传:使用CarrierWave和Devise
  14. 程序员应该使用的键盘中英文切换设置
  15. word文件怎么另存
  16. c语言count的作用,C语言中count是什么意思?
  17. assertThat断言测试方法
  18. xmmi - 晨星半导体公司MSTAR平台
  19. Asterisk修改call file源代码(pbx_spool.c)以支持邀请PJSIP webrtc分机
  20. Linux系统文件服务

热门文章

  1. 为什么PHP在很多公司遭到弃用?
  2. 日期格式‘YYYY-MM-DD’中的BUG
  3. 2019年度区块链安全复盘总结
  4. PTA 直捣黄龙 (30 分)
  5. mysql声明存储过程_MySQL 声明变量及存储过程分析
  6. { errcode: 88, sub_code: “40000“, sub_msg: “access_token is blank“, errmsg: “ding talk error[subcode
  7. Molecular Psychiatry:海马及其相关网络在电休克抗抑郁中的机制研究
  8. java基础知识之注解、反射(一)
  9. 基于贝叶斯分类器的社区UGC反垃圾模型
  10. ComM(通信管理)和CanNm(network)