Python设计思想&设计原则

设计思想

1.封装

数据角度

多种数据合为一种数据

优势:代码可读性高

           将数据与行为相关联

例如:电脑(内存,储存空间,...)

行为角度

提供[必要]功能,隐藏细节(方法体,方法本身)

隐藏成员,以双下划线命名(如:__a)

属性:保护数据(加工数据,只读,只写)

实例:

class A:
def __init__(self,n):
self.__n = n
@property
def n(self):
return self.__n
@n.setter
def n(self,value):
self.__n = value
@n.deleter
def n(self):
print("n被del了")
a = A(10)
print(a).n # 10
a.n = 20
print(a).n # 20
del a.n # n被del了

@property 详解

设计角度

分而治之:需求分为多个类(行为)

变则疏之:将变化点单独定义到类中

高内聚:一个类的内部 干一件事。单一职责

低耦合:类与类的关系松散

类与类行为不同,对象与对象数据不同

2.多态

传入不同的实例对象,做不同的事

实例:

class Player:
def __init__(self,name):
self.name = name
def attack(self,player):
print(f'{player.name} 被 {self.name} 攻击了') player1 = Player('小宇宙zjy')
player2 = Player('小杜同学')
player1.attack(player2) # 小杜同学 被 小宇宙zjy 攻击了

Python学习笔记之 Python设计思想&设计原则的更多相关文章

  1. python学习笔记(python简史)

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交 ...

  2. python 学习笔记 9 -- Python强大的自省简析

    1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...

  3. python 学习笔记一——Python安装和IDLE使用

    好吧,一直准备学点啥,前些日子也下好了一些python电子书,但之后又没影了.年龄大了,就是不爱学习了.那就现在开始吧. 安装python 3 Mac OS X会预装python 2,Linux的大多 ...

  4. python学习笔记(一):python简介和入门

    最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...

  5. python学习笔记(1)--python特点

    python诞生于复杂的信息系统时代,是计算机时代演进的一种选择. python的特点,通用语言,脚本语言,跨平台语言.这门语言可以用于普适的计算,不局限于某一类应用,通用性是它的最大特点.pytho ...

  6. python学习笔记之——python模块

    1.python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  7. Python学习笔记 - day12 - Python操作NoSQL

    NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...

  8. [Python学习笔记1]Python语言基础 数学运算符 字符串 列表

    这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...

  9. python学习笔记之——python面向对象

    Python是一门面向对象语言. 1.面向对象技术介绍 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个 ...

随机推荐

  1. bzoj1528[POI2005]sam-Toy Cars*&&bzoj1826[JSOI2010]缓存交换

    bzoj1528[POI2005]sam-Toy Cars bzoj1826[JSOI2010]缓存交换 题意: Jasio有n个不同的玩具,它们都被放在了很高的架子上,地板上不会有超过k个玩具.当J ...

  2. CentOS7 64位下MySQL区分大小写

    在使用centos系统时,安装完MySQL数据库,创建完表之后,发现查询表操作时,是区分大小写的, 说以说在创建表之前,需要查看一下数据库是否区分大小写: 查看办法: lower_case_table ...

  3. Python 3基础教程8-if else语句

    终于更新到了,教程8, 如果对python软件测试.接口测试.自动化测试.面试经验交流.感兴趣可以加君羊软件测试交流: 1079636098,还会有同行一起技术交流. 本文介绍if else语句,不多 ...

  4. Puppeteer爬虫实战(二)

    连接浏览器 上一篇说到了Puppeteer本质是使用了Chrome Devtools协议控制浏览器,本篇就说说连接方式. 常规Hook浏览器 此方式其实就是需要一个浏览器可执行文件(不同平台需要下载对 ...

  5. eclipse GIT本地库分支操作

    git分支是一个重要的知识点,平时我们开发主要结合eclipse,idea来操作,今天这贴主要以eclipse来操作git本地库分支,主要内容包括新建分支,切换分支,合并分支,冲突解决,重命名分支,删 ...

  6. Mybatis——@MapperScan原理

    @MapperScan配置在@Configuration注解的类上会导入MapperScannerRegistrar类. 而MapperScannerRegistrar实现了ImportBeanDef ...

  7. spring +ActiveMQ 实战 topic selecter指定接收

    spring +ActiveMQ 实战 topic selecter指定接收 queue:点对点模式,一个消息只能由一个消费者接受 topic:一对多,发布/订阅模式,需要消费者都在线(可能会导致信息 ...

  8. lua中单引号和双引号和/的输出的问题

    lua单引号和双引号的问题 lua 中的 单引号 与 双引号 (" " 与 '') Lua除支持双引号("")表示字符串外, 也支持用单引号('') 注意: 如 ...

  9. transaction already active

    这个问题是使用spring 事务管理时经常出现的错误,最开始时相当令我头疼,也不知道是哪里出现的问题.在网上找了一阵后,依然无解.意思就是说上一个事务处于激活状态中,不能开始新的数据库更新操作. // ...

  10. 使用 expect 重启失败的 git pull/push 操作

    问题的提出 最近使用 github 上传.下载项目代码时,经常会卡很久,有时候在命令行打了 git push 然后就去上厕所了,结果等我回来的时候,发现 push 早已经失败了,还得重新提交一下.如果 ...