实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例) 1.namedtuple:命名元组,可以创建一个没有方法只有属性的类 from collections import namedtuple card = namedtuple('card',['rank','suit']) # rank 牌面大小,suit牌面的花色 # card其实就是namedtuple创建的一个类,其属性就是rank和suit c1 = card(,'红心 ') # c1是实例化的对象 print(c1) p…
Python面向对象04 /封装.多态.鸭子类型.类的约束.super 目录 Python面向对象04 /封装.多态.鸭子类型.类的约束.super 1. 封装 2. 多态 3. 鸭子类型 4. 类的约束 5. super的深度剖析 1. 封装 把一堆东西(代码,数据)放到一个地方(空间),并且可以使用,比如:函数,类 2. 多态 一个事物可以呈现多种形态 , 例如:水可以支持固态.液态.气态 Python默认支持多态(Java是强定义语言,Python是弱定义语言) Python一个变量可以支…
这个Item系列是egon老师自创的,个人还是可以接受这种文化底蕴的,所以直接拿来用,也是毫无违和感的 所谓Attr系列,其实是__setattr__,__delattr__,__getattr__ 三个函数,从名字中可以看出来这是一套设置,删除,查询的函数,那我们来一个一个的看: __setitem__(self,key,value):当对类中的某个属性进行"赋值"时触发的函数(只有使用字典赋值的方式时才会触发此方法的执行) 与Attr系列的区分:__setattr__(self):…
属性 如果你已经了解Python类中的方法,那么属性就非常简单了,因为Python中的属性其实是普通方法的变种. 哎,其实就是这样,我们看一下当我们想查看税后工资的时候,这其实是一个人的属性,但是它却要经过一些特殊的处理或者计算,让我们必须写在一个方法里,这个时候我们使用@property这个修饰符,就可以像使用字段一样调用这个方法了.对,属性是处女座就是这么矫情!!!当然如果你和我一样是神经大条的射手座,完全不用care这个属性什么鬼的. 尽管如此,在这里还是要说一说要注意一下几点: 1.定义…
__str__和__repr__,__format__ 改变对象的字符串显示__str__,__repr__ 自定制格式化字符串__format__ #_*_coding:utf-8_*_ format_dict={ '格式1':'{obj.name}-{obj.addr}-{obj.type}',#学校名-学校地址-学校类型 '格式2':'{obj.type}:{obj.name}:{obj.addr}',#学校类型:学校名:学校地址 '格式3':'{obj.type}/{obj.addr}/…
在类中定义的函数属于绑定方法(bound method),因为用户定义的函数都有 __get__ 方法,所以依附到类上时,就相当于描述符.示例 20-13 演示了从 面向对象专题(九)示例 20-8 里定义的 Managed 类中读取 spam 方法.示例 20-13 方法是非覆盖型描述符 >>> obj = Managed() >>> obj.spam ➊ <bound method Managed.spam of <descriptorkinds.Man…
https://www.cnblogs.com/flashBoxer/p/9771797.html 实现了 __get__.__set__ 或 __delete__ 方法的类是描述符.描述符的用法是,创建一个实例,作为另一个类的类属性. 1 前言 描述符是对多个属性运用相同存取逻辑的一种方式.例如,DjangoORM 和 SQL Alchemy 等 ORM 中的字段类型是描述符,把数据库记录中字段里的数据与 Python 对象的属性对应起来. 描述符是实现了特定协议的类,这个协议包括 __get…
一.classmethod介绍 介绍:@classmethod修饰符我们从名称就可以知道,这是一个类方法,那么和普通的类中的方法有什么不同的 a.类方法,是由类本身调用的,无需实例化类,直接用类本身调用即可,但是要注意实例对象也可以调用类方法 b.类方法,无需要要一个self参数,这个self参数表示类的实例对象,但是他需要一个cls参数,这个参数表示类本身 c.类方法,可以调用类的属性,类的方法,类的实例对象 下面我们正常进入介绍classmethod这个修饰符 1.类方法可以由类调用,也可以…
补充内置函数 isinstance(obj,Foo)   # 判断obj是不是foo的实例 issubclass()      # 判断一个类是不是另一个类的子类 反射 什么是反射? 通过字符串来操作类或者对象的属性 怎么用? hasattr(adj,’xxx’) 判断adj有没有’xxx’属性 getattr(adj,’xxx’,None) adj有’xxx’就返回adj.xxx,没有则返回None,若不指定第三个                                 参数,没有则会…
上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语法形式是with...as... 所谓上下文管理协议,就是咱们打开文件时常用的一种方法:with __enter__(self):当with开始运行的时候触发此方法的运行 __exit__(self, exc_type, exc_val, exc_tb):当with运行结束之后触发此方法的运行 ex…