Python学习第十六课——静态属性(property, classmethod, staticmethod)
计算所居住房子的面积
普通写法
- class Room:
- def __init__(self,name,owner,width,length,heigh):
- self.name=name
- self.owner=owner
- self.width=width
- self.lenth=length
- self.heigh=heigh
- def cal_area(self):
- print('%s 住的 %s 总面积为 %s' %(self.owner,self.name,self.heigh*self.width))
- r1=Room('别墅','憨憨',100,100,100)
- r2=Room('大别墅','玫玫',1000,1000,1000)
- r1.cal_area() # 憨憨 住的 别墅 总面积为 10000
- r2.cal_area() # 玫玫 住的 大别墅 总面积为 1000000
property 写法
- # property 用法
- class Room:
- def __init__(self, name, owner, width, length, heigh):
- self.name = name
- self.owner = owner
- self.width = width
- self.lenth = length
- self.heigh = heigh
- @property # 装饰器property 可以将 方法 转化为属性 在下面调用时 不需要带括号
- def cal_area(self):
- print('%s 住的 %s 总面积为 %s' % (self.owner, self.name, self.heigh * self.width))
- r1 = Room('别墅', '憨憨', 100, 100, 100)
- r2 = Room('大别墅', '玫玫', 1000, 1000, 1000)
- r1.cal_area # 憨憨 住的 别墅 总面积为 10000
- r2.cal_area # 玫玫 住的 大别墅 总面积为 1000000
类方法(classmethod)
- class Room:
- tag=1
- def __init__(self,name,owner,width,length,heigh):
- self.name=name
- self.owner=owner
- self.width=width
- self.lenth=length
- self.heigh=heigh
- @property
- def cal_area(self,):
- return self.heigh*self.width
- def test(self,):
- print('from test',self.name)
- @classmethod # 变为了类方法
- def tell_info(cls):
- print(cls)
- print('---->', cls.tag)
- # def tell_info(self):
- # print('---->',self.tag)
- print(Room.tag) #
- # r1=Room('别墅','憨憨',100,100,100)
- # Room.test('测试')
- #Room.tell_info(r1) # ----> 1
- Room.tell_info() # ----> 1 拥有cls 就不需要实例化对象了
静态方法
- class Room:
- tag=1
- def __init__(self,name,owner,width,length,heigh):
- self.name=name
- self.owner=owner
- self.width=width
- self.lenth=length
- self.heigh=heigh
- @property # 静态属性
- def cal_area(self,):
- return self.heigh*self.width
- def test(self,):
- print('from test',self.name)
- @classmethod # 变为了类方法
- def tell_info(cls):
- print(cls)
- print('---->', cls.tag)
- @staticmethod # 静态方法只是名义上归属性管理,不能使用类变量和实例变量,是类的工具包
- def wash_body(a,b,c):
- print('%s %s %s 正在洗澡 '%(a,b,c))
- def test(x,y,z):
- print(x,y,z)
- Room.wash_body('k','l','o') # k l o 正在洗澡
- r1=Room('别墅','憨憨',100,100,100)
- r1.wash_body('k','l','o') # k l o 正在洗澡
- Room.test('k','l','o') # k l o
- r1.test('k','l','o') # 报错了 不能这样调用 因为test 不是静态方法
静态方法
Python学习第十六课——静态属性(property, classmethod, staticmethod)的更多相关文章
- Python学习第二十六课——PyMySql(python 链接数据库)
Python 链接数据库: 需要先安装pymysql 包 可以设置中安装,也可以pip install pymysql 安装 加载驱动: import pymysql # 需要先安装pymysql 包 ...
- Python 学习 第十六篇:networkx
networkx是Python的一个包,用于构建和操作复杂的图结构,提供分析图的算法.图是由顶点.边和可选的属性构成的数据结构,顶点表示数据,边是由两个顶点唯一确定的,表示两个顶点之间的关系.顶点和边 ...
- python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作
django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...
- Python学习(十六)—— 数据库
一.数据库介绍 数据库(Database,DB)是按照数据结构来组织.存储和管理数据的,并且是建立在计算机存储设备上的仓库. 数据库指的是以一定方式存储在一起.能为多个用户共享.具有尽可能小的冗余度. ...
- Python学习第十六篇——异常处理
在实际中,很多时候时候,我们并不能保证我们所写的程序是完美的.比如我们程序的本意是:用户在输入框内输入数字,并进行后续数学运算,即使我们提醒了用户需要输入数字而不是文本,但是有时会无意或者恶意输入字符 ...
- Python学习札记(十六) 高级特性2 迭代
参考:迭代 Note 1.如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在C.C++.Java等语言中,for循 ...
- Python学习日记(十六) time模块和random模块
time模块 python表示时间的三种方式:时间戳.元祖(struct_time).格式化时间字符串 三种格式之间的转换: 1.时间戳 就是从1970年1月1日0点0分0秒开始按秒计算的偏移量,时间 ...
- Python学习,第六课 - 集合
Python中集合的相关操作 集合是一个无序的,不重复的数据组合 它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 list_1 =set ...
- Python学习第十五课——类的基本思想(实例化对象,类对象)
类的基本思想 类:把一类事物的相同的特征和动作整合到一起就是类类是一个抽象的概念 对象:就是基于类而创建的一个具体的事物(具体存在的)也是特征和动作整合到一块 对象写法 # 对象写法 def scho ...
随机推荐
- dfs序与求子树子节点(染了色)的个数
https://blog.csdn.net/hpu2022/article/details/81910490 https://blog.csdn.net/qq_39670434/article/det ...
- Go语言基础之runtime包
文章引用自 Golang中runtime的使用 runtime调度器是非常有用的东西,关于runtime包几个方法: Gosched:让当前线程让出cpu以让其他线程运行,它不会挂起当前线程,因此当前 ...
- 本地简单HTTP服务器
cd进要启动服务器的目录 python -m http.server 7800 (Python 3.x) python -m SimpleHTTPServer 7998 (Pyhton2.x)
- Fluent_Python_Part2数据结构,02-array-seq,序列类型
1. 序列数据 例如字符串.列表.字节序列.元组.XML元素.数据库查询结果等,在Python中用统一的风格去处理.例如,迭代.切片.排序.拼接等. 2. 容器序列与扁平序列 容器序列:容器对象包含任 ...
- ROS学习资源
1.ROS机器人操作系统自主学习实践环境 https://www.shiyanlou.com/courses/854 2.ROS官方网站 http://wiki.ros.org/ ROS中文官方网站 ...
- Python:json 模块
字符串转dict.list data = "[{....},{...},...]" list_data = json.loads(data) dict.list转字符串 list ...
- Beego Learning Notes
Beego框架学习 1.1软件框架 一个公司是由公司中的各部部门来组成的,每一个部门拥有特定的职能,部门与部门之间通过相互的配合来完成让公司运转起来. 一个软件框架是由其中各个软件模块组成的,每一个模 ...
- CN109241772A发票区块链记录方法、装置、区块链网关服务器和介质(腾讯)
学习笔记-2 CN109241772A发票区块链记录方法.装置.区块链网关服务器和介质(腾讯) 解决什么问题? 让发票信息记录到区块链的情况下减少发票信息泄露 链上有什么数据? 发行发票事件信息(发票 ...
- SSL 证书格式普及,PEM、CER、JKS、PKCS12
根据不同的服务器以及服务器的版本,我们需要用到不同的证书格式,就市面上主流的服务器来说,大概有以下格式: .DER .CER,文件是二进制格式,只保存证书,不保存私钥. .PEM,一般是文本格式,可保 ...
- Java IO流详解(五)——缓冲流
缓冲流也叫高效流,是处理流的一种,即是作用在流上的流.其目的就是加快读取和写入数据的速度. 缓冲流本身并没有IO功能,只是在别的流上加上缓冲效果从而提高了效率.当对文件或其他目标频繁读写或操作效率低, ...