【学习笔记】--- 老男孩学Python,day18 面向对象------ 属性,类方法,静态方法
属性
属性: 将方法伪装成一个属性,代码上没有什么提升,只是更合理.
应用场景: 类中 要用名词时候可以用@property 比如,求面积,周长,平方,体脂 等运算时候
例如: bmi是名词,最好不要作为方法名
class Bmi: def __init__(self,name, weight, heigth): self.name = name self.weight = weight self.heigth = heigth def bmi(self): #bmi是名词,最好不要作为方法名 b = self.weight / (self.weight**2) print('%s的体脂数为%s' % (self.name,b)) p1 = Bmi('张三',89,1.77) p1.bmi()
@property ***
@属性名.setter ** 改,增
@属性名.deleter * 删
用法:
# 属性的修改 property 名词作方法的 class Person: def __init__(self, name, age): #2 执行__init__方法 self.name = name # if type(age) is int: # self.__age = age # else: # print('你输入的年龄类型有误,请输入数字!') # 三元运算一下下 self.__age = age if type(age) is int \ else print('你输入的年龄类型有误,请输入数字!') @property # 把方法伪装成一个属性 伪装到底 return self.__age @age.setter # 添加一个可以修改属性的方法 (装饰器 setter 就是改) def age(self, a1): # 判断 你修改的年龄必须是数字 # if type(a1) is int: # self.__age = a1 # else: # print('你输入的年龄类型有误,请输入数字!') # 三元运算一下下 self.__age = a1 if type(a1) is int \ else print('你输入的年龄类型有误,请输入数字!') @age.deleter def age(self): del self.__age print('已删除') p1 = Person('张三', 20) #1实例化一个对象 # p1 = Person('张三','20') print(p1.age) # 查 p1.age = 99 # 改:执行类中的 @ age.setter 方法 print(p1.age) del p1.age # print(p1.age) 已删除 不存在
类方法
class A: def func(self): # 普通方法 print(self) @classmethod # 类方法 def func1(cls): print(cls) a1 = A() a1.func() A.func(a1) # 类方法: 通过类名调用的方法,类方法中第一个参数约定俗称cls,python自动将类名(类空间)传给cls. A.func1() a1 = A() a1.func1() # 对象调用类方法,cls 得到的是类本身.
@classmethod
只能有类名调用(对象调用,传给cls参数的也是该对象的所属类).
使用场景:
1,无需对象参与.
class A1: name = 'alex' count = 1 @classmethod def func1(cls): # 此方法无需对象参与 return cls.name + str(cls.count + 1) # A.func1(111) 不可取 a1 = A() print(a1.func1()) print(A.func1())
2,对类中的静态变量进行修改.
class A: age = 12 @classmethod def func1(cls): # 此方法无需对象参与 # print(cls) # 对B类的所有的内容可以进行修改. print(cls.age) # return cls.name + str(cls.count + 1) class B(A): age = 22 B.func1()
3,在父类中类方法得到子类的类空间,为所欲为.
class A: age = 12 def func2(self): print(self) # self 子类的对象,能得到子类 空间的任意值 class B(A): age = 22 b1 = B() b1.func2()
静态方法
@staticmethod
# 1,代码块.清晰.
# 2,复用性.
class A: @staticmethod def login(username, password): if username == 'alex' and password == 123: print('登录成功') else: print('登录失败...') A.login('alex',1234)
【学习笔记】--- 老男孩学Python,day18 面向对象------ 属性,类方法,静态方法的更多相关文章
- python面向对象 : 属性, 类方法, 静态方法
一. 属性 属性: 将方法伪装成一个属性,代码上没有什么提升,只是更合理. property应用 : 类似于bmi这种,area,周长.... 需要用到计算的. # 求BMI体质数:BMI = 体 ...
- 【python学习笔记】9.魔法方法、属性和迭代器
[python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...
- 学习笔记《简明python教程》
学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...
- Flutter学习笔记(8)--Dart面向对象
如需转载,请注明出处:Flutter学习笔记(7)--Dart异常处理 Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多 ...
- DuiLib学习笔记(二) 扩展CScrollbar属性
DuiLib学习笔记(二) 扩展CScrollbar属性 Duilib的滚动条滑块默认最小值为滚动条的高度(HScrollbar)或者宽度(VScrollbar).并且这个值默认为16.当采用系统样式 ...
- python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码
python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...
- python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法
python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0.zfill()方法语法:s ...
- python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法
python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
随机推荐
- $_REQUEST预定义变量
1,$_REQUEST接收$_GET,$_POST,$_COOKIE数据,因此这三种方式都可以攻击$_REQUEST方式,这种方式不安全,不建议使用$_REQUEST. 2,如果不知道get或post ...
- jquery ajax在跨域访问post请求的时候,包括ie9以下的浏览器无效,其他浏览器正常
最近做的一个项目,原先没有要求兼容IE9以下,所以在写代码的时候也没有打开IE9以下去测试,这两天要去做IE9以下的兼容,在IE9以下打开本地的项目发现数据请求不成功,而通过发布道服务器上的链接打开是 ...
- (转) Rabbitmq学习笔记
详见原文: http://blog.csdn.net/shatty/article/details/9529463 Rabbitmq学习笔记
- Hadoop1.x集群安装部署(VMware)
一.hadoop版本介绍 不收费的Hadoop版本主要有三个(均是国外厂商),分别是:Apache(最原始的版本,所有发行版均基于这个版本进行改进).Cloudera版本(Cloudera’s Dis ...
- 基于Spring Task的定时任务调度器实现
在很多时候,我们会需要执行一些定时任务 ,Spring团队提供了Spring Task模块对定时任务的调度提供了支持,基于注解式的任务使用也非常方便. 只要跟需要定时执行的方法加上类似 @Schedu ...
- HMM分词实例
class HMM(object): def __init__(self): import os # 主要是用于存取算法中间结果,不用每次都训练模型 self.model_file = 'model/ ...
- Impala 使用的端口
下表中列出了 Impala 是用的 TCP 端口.在部署 Impala 之前,请确保每个系统上这些端口都是打开的. 组件 服务 端口 访问需求 备注 Impala Daemon Impala 守护进程 ...
- 从cpu负载到jstack分析线程状态
示例代码: public class CPULockTest { private static Object lock1 = new Object(); private static Object l ...
- vue 监听对象里的特定数据
vue 监听对象里的特定数据变化 通常是这样写的,只能监听某一个特定数据 watch: { params: function(val) { console.log(val) this.$ajax.g ...
- TCP三次握手/四次挥手
TCP 三次握手 TCP 连接是通过三次握手进行初始化的.三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程: 1. ...