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 ...
随机推荐
- awk函数实现将点分式形式的掩码转换为十进制形式的掩码
在用awk处理文本时,需要将源数据为点分式形式的掩码转换为十进制形式的掩码,下边的函数可简单实现: 转换功能函数cdr2mask function cdr2mask(mask_point) { num ...
- 再有人问你HashMap,把这篇文章甩给他!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java==集合中的精髓==了,如果你觉得自己对 ...
- buuctf Easysql 小记
堆叠注入 利用原理: 补充系统变量@@sql_modesql_mode:是一组mysql支持的基本语法及校验规则PIPES_AS_CONCAT:将“||”视为字符串的连接操作符而非或运算符,这和Ora ...
- Linux安装Redis服务
下载:wget http://download.redis.io/releases/redis-5.0.5.tar.gz 解压:tar -zxvf redis-5.0.5.tar.gz 进入redi ...
- C:数组基础
数组 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来--称为数组. 数组就是在内存中连续的相同类型的变量空间.同一个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的 ...
- 移动端rem自适应方案
一般设计师给我们的设计稿尺寸都为750*1340 .. 网易,淘宝移动端首页上html元素的font-size 目前就先说一下网易的做法 引入下面这段js,用于计算动态的font-size (func ...
- MySQL8.0.11安装后,使用CMD无法启动mysql服务
首先,先把mysql的bin路径添加到系统环境变量 这样做可以,直接进入CMD后执行mysql服务,不需要进入mysql的bin文件路径去执行. 第一步:在MySQL的安装文件的bin目录(例如:C: ...
- win10中,vscode安装go插件排雷指南
最近学习go,想着使用强大的vscode编写go,在安装go插件过程中,遇到了很多问题.下面记录解决方案. 1)win10环境,安装go,vscode,git 配置GOPATH环境变量,在我的电脑-& ...
- Linux - 查看文件、文件夹、磁盘大小命令
1. ls -lsh 2. du -sh du == disk usage (磁盘使用量,占用的磁盘空间) 一个文件占用的磁盘空间和一个文件的大小是两码事情.占用空间取决于文件系统的块(block)的 ...
- 基于PowerCli自动部署和配置vmvare虚拟机
1 文档说明 2 Vsphere PowerCli安装和配置 3 PowerCli常用命令 4 创建自定义规范 5 虚拟机克隆与配置脚本 6 技术资料 1 文档说明 使用Vsphere管理虚拟机,在进 ...