python之内置装饰器(property/staticmethod/classmethod)
python内置了property、staticmethod、classmethod三个装饰器,有时候我们也会用到,这里简单说明下
1、property
作用:顾名思义把函数装饰成属性
一般我们调用类方法成员,都是如下写法:
class propertyTest():
def __init__(self,x,y):
self.x = x
self.y = y def square(self):
return self.x * self.y pt = propertyTest(3,5)
print(pt.square())
这里一看square就是类的一个方法,但如果把他写成如下形式,那么就不确定调用的一定是类方法:
class propertyTest():
def __init__(self,x,y):
self.x = x
self.y = y @property
def square(self):
return self.x * self.y pt = propertyTest(3,5)
print(pt.square)
这里调用方法类似调用了一个成员变量一样,如果写成print(pt.square())编译器会报错
这就是property的用法, 把一个方法变成一个变量来调用
2、staticmethod
作用:不需要实例化,直接可以调用类中的方法,如下所示
class A():
def __init__(self):
pass @staticmethod
def plus(x,y):
print(x*y) c = A()
c.plus(2,3)
A.plus(4,5)
我们可以实例化类A,然后调用方法plus,也可以直接类.方法调用
3、classmethod
作用:和staticmethod类似,不同的是把调用的类作为第一个参数传入,如下:
class A():
def __init__(self):
pass @classmethod
def plus(cls,x,y):
print(cls)
print(x*y) A.plus(4,5)
c = A()
c.plus(5,6)
这里print(cls)打印的是类A,其他用法同staticmethod
python之内置装饰器(property/staticmethod/classmethod)的更多相关文章
- Python之内置装饰器property
# -*- coding: utf-8 -*- # author:baoshan class Student(object): def __init__(self, name): self.name ...
- Python内置装饰器@property
在<Python装饰器(Decorators )>一文中介绍了python装饰器的概念,日常写代码时有一个装饰器很常见,他就是内置的@property. 我们一步步的来接近这个概念. 一个 ...
- python设计模式之内置装饰器使用(四)
前言 python内部有许多内建装饰器,它们都有特别的功能,下面对其归纳一下. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python设计模式之装饰 ...
- python基础语法16 面向对象3 组合,封装,访问限制机制,内置装饰器property
组合: 夺命三问: 1.什么是组合? 组合指的是一个对象中,包含另一个或多个对象. 2.为什么要用组合? 减少代码的冗余. 3.如何使用组合? 耦合度: 耦: 莲藕 ---> 藕断丝连 - 耦合 ...
- python内置装饰器
前言 接着上一篇笔记,我们来看看内置装饰器property.staticmethod.classmethod 一.property装饰器 1. 普通方式修改属性值 code class Celsius ...
- python基础之内置装饰器
装饰器 简介 功能与格式 内置装饰器 @classmethod @propertry @staticmethod 其它 ---------------------------------------- ...
- Python 内置装饰器
内置的装饰器 内置的装饰器和普通的装饰器原理是一样的,只不过返回的不是函数,而是类对象,所以更难理解一些. @property 在了解这个装饰器前,你需要知道在不使用装饰器怎么写一个属性. d ...
- 面向对象之classmethod和staticmethod(python内置装饰器)
对象的绑定方法复习classmethodstaticmethod TOC 对象的绑定方法复习 由对象来调用 会将对象当做第一个参数传入 若对象的绑定方法中还有其他参数,会一并传入 classmetho ...
- 三个面向对象相关的装饰器@property@staticmathod@classmethod
@property 先看实例: from math import pi class Circle: def __init__(self,r): self.r = r @property def per ...
随机推荐
- Handler相关
1.延迟方法 Message msg = new Message(); msg.what = 0x111; // netWorkHandler.sendMessage(msg); //延迟方法三 ...
- Linux yum源配置
Linux yum源配置 本文介绍Red Hat下yum源配置方法,Redhat使用yum网络源需要购买服务,但是本地yum源不会收费. CentOS用户自带yum源,并且yum不收费. 准备工具: ...
- linux操作命令,批量注释#方法
用户,密码 1.修改密码:passwd 2.切换用户: su root 3.增加用户:adduesr+用户 4.root更改目录的权限:chown leopard:leopard data/ -R ...
- vue上线后,背景图片路径错误
build 下的utils.js中添加配置 if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, public ...
- [leetcode]17. Letter Combinations of a Phone Number手机键盘的字母组合
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that th ...
- android 设置LOGO和app名称
mipmap和drawable目录都可以存放图片,一般情况下,将LOGO文件存放在mipmap目录,普通图片放到drawable目录. 一.在mipmap目录添加LOGO图片 在mipmap目录右键- ...
- ionic3搭建笔记及编译成apk
一.安装node.js 二.安装Ionic2 npm install -g ionic (安装最新版本) ionic -v //查看版本号(是否安装成功) npm uninstall -g ionic ...
- Loadrunner登录判断
loadrunner判断登录是否成功,以下方法可以解决:1.利用添加检查点web_reg_find函数的方法---------------------------- lr_start_transact ...
- py2和py3的区别总结
1.编码 python2默认编码方式ASCII码(不能识别中文,要在文件头部加上 #-*- encoding:utf-8 -*- 指定编码方式) python3默认编码方式unicode(可识别中 ...
- if语句和三元运算符的替换
要求: 已经知道两个数,计算最大值 两个整数,比较大小 使用if还是三元 判断条件多,使用if 三元,必须有结果的, if 可以没有结果的*/public class IfElseDemo_1{ pu ...