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 ...
随机推荐
- C++记录(一)
1 extern 符表示该变量不是当前作用域定义的,用于声明. 如extern i;表示i不是当前作用域里的,是其他某个include的cpp文件里的变量. 2 int *p=0;相当于初始化p为空指 ...
- Java最新面试问答整理
Q:JDK和JRE区别? JDK是整个JAVA的核心,包括了Java运行环境JRE,一堆Java工具和Java基 础的类库.通过JDK开发人员将源码文件(java文件)编译成字节码文件(class文 ...
- css 把图片变成灰色
3.14号刚下班,噩耗传来,伟大的物理学家斯蒂芬·威廉·霍金去世了. 同事正好叫我吃饭,几分钟内去看了一眼百度百科,一看也都变黑白了,可是查看图片还是彩色的,也是哪有这么快的时间来p图呢,回来搜了一下 ...
- 吴裕雄--天生自然神经网络与深度学习实战Python+Keras+TensorFlow:Bellman函数、贪心算法与增强性学习网络开发实践
!pip install gym import random import numpy as np import matplotlib.pyplot as plt from keras.layers ...
- 【PAT甲级】1083 List Grades (25 分)
题意: 输入一个正整数N(<=101),接着输入N个学生的姓名,id和成绩.接着输入两个正整数X,Y(0<=X,Y<=100),逆序输出成绩在x,y之间的学生的姓名和id. tric ...
- 时间同步服务器ntpd的搭建
如果系统没有默认安装,可以手动安装,一条命令就可以搞定: yum install ntp -y 安装之后修改配置文件: vim /etc/ntp.conf #restrict 127.0.0.1 #r ...
- php redis 集群扩展类文件
<?php /** * redis集群驱动 */ namespace Common\Api; class RedisCluster{ protected $servers=array( '192 ...
- eight(待考究)
为什么明明结果都可以到达那种情况,步骤不一样就不给通过 QAQ 有哪位大佬提点一下,在下感激不尽~~~ 我的代码: #include <iostream>#include <queu ...
- 解决IDEA快捷键 Alt+Insert 失效的问题
现象 IDEA快捷键 Alt+Inser 失效,单击右键也不出现[Generate]. 这个问题经常出现在重新安装IDEA后. 原因 缺少2个插件 解决办法 在setting中启用这2个插件即可.这2 ...
- python opencv:像素运算
以下运算两个图像的大小需要一样 算术运算: cv2.add(img1, img2):两个图像像素相加 cv2.subtract(img1, img2):两个图像像素相减 cv2.multiply(im ...