python中面向对象之装饰器
python面向对象内置装饰器property,staticmethod,classmethod的使用
@property 装饰器作用及使用
- 作用:面向对象中的方法伪装成属性
- 使用如下:
class Circle:
def __init__(self,r):
self.r = r
@property
def area(self):
return 3.14*self.r**2
@property
def perimeter(self):
return 2*3.14*self.r
C = Circle(10)
print(C.area) #区别:print(C.area())
print(C.perimeter) #区别:print(C.perimeter())
@staticmethod 装饰器作用及使用
- 作用:声明一个方法是一个静态方法,不必传任何默认的参数
- 使用如下:
class Student:
def __init__(self,name):
self.name = name
@staticmethod
def login(): # def log(self):print("登录程序")
print("登录程序")
Student.login()
@classmethod 装饰器的作用及使用
- 作用:表示所被装饰的方法为类对象实例,类方法有类变量cls传入,从而可以用cls做一些相关的处理,调用该类方法时,传入的类变量cls是子类,而非父类
- 使用如下:
class Manager:
def __init__(self,name):
self.name = name
@classmethod # 装饰当前这个方法为一个类方法,默认传参数cls,表示当前所在的类名
def login(cls):
username = input('>>>')
stu = cls(username)
return stu
obj = Manager.login() # 用类名可以直接调用这个方法了
print(obj.__dict__)
>>> zz # 输入名字
打印结果:{'name': 'alex'}
python中面向对象之装饰器的更多相关文章
- Python中利用函数装饰器实现备忘功能
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
- python 中多个装饰器的执行顺序
python 中多个装饰器的执行顺序: def wrapper1(f1): print('in wrapper1') def inner1(*args,**kwargs): print('in inn ...
- 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解
第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一. 引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...
- python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)
转载:http://python.jobbole.com/81683/ 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需 ...
- python基础-面向对象(装饰器)
属性: @property @method_name.setter @method_name.deleter 三个标签都是放在方法的上面来使用,且方法名要和后续使用的 变量名字相一 ...
- Python中的各种装饰器详解
Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义. 一.函数式装饰器:装饰器本身是一个函数. 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: ...
- 谈谈Python中的decorator装饰器,如何更优雅的重用代码
众所周知,Python本身有很多优雅的语法,让你能用一行代码写出其他语言很多行代码才能做的事情,比如: 最常用的迭代(eg: for i in range(1,10)), 列表生成式(eg: [ x* ...
- Python中的单例模式——装饰器实现剖析
Python中单例模式的实现方法有多种,但在这些方法中属装饰器版本用的广,因为装饰器是基于面向切面编程思想来实现的,具有很高的解耦性和灵活性. 单例模式定义:具有该模式的类只能生成一个实例对象. 先将 ...
- Python中的@property装饰器
要了解@property的用途,首先要了解如何创建一个属性. 一般而言,属性都通过__init__方法创建,比如: class Student(object): def __init__(self,n ...
随机推荐
- activiti7业务表示Businesskey
启动流程实例时,指定的businesskey,就会在act_ru_execution #流程实例的执行表中存储businesskey. Businesskey:业务标识,通常为业务表的主键,业务标识和 ...
- My Sublime
Package Control:插件包管理工具 Soda:一个流行的主题,包含代码着色.标签.图标 Emmet:流行的Html编写插件,是zed code升级版包含css编写 SublimeLinte ...
- mysql中BLACKHOOL的作用
MySQL在5.x系列提供了Blackhole引擎–"黑洞". 其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉, 不做实际存储:Select语句的内容永远是空. 和Lin ...
- Linux的各个发行版本(一)
三大流派 1.Slackware SUSE Linux Enterprise Server (SLES) OpenSuse桌面 2.debian 迄今为止最遵循GNU规范的Linux系统 Ubuntu ...
- elementUI 的el-pagination 分页功能
<div class="block1"> <el-pagination @size-change="handleSizeChange" @cu ...
- c# 陈景润 15 子问题
初学编程时在 csdn 上写过一个陈景润 15 子问题的项目,https://blog.csdn.net/weixin_41628344/article/details/79171846 当时的主要精 ...
- 为什么要用webpack!
为什么要用webpack? 现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包. 模块化,让我们可以把复杂的程序细化为小的文件; 类似于Type ...
- 【记录】gitLab git命令add commit fetch pull push
最近项目使用git进行版本控制,由于之前用svn,所以对git不是太熟悉,网上一通乱找git各命令含义, 以下内容感觉讲的很详细,可以很清楚理解git提交流程,博主把重要的信息用红字标注了,更加显眼. ...
- teb-安装
源码:https://github.com/rst-tu-dortmund/teb_local_planner.git 以husky为例子: 1.在gazebo里面配置好机器人底盘的环境 roslau ...
- SVM 详解
https://cloud.tencent.com/developer/article/1411618 (关于hinge损失函数的定义) https://zhuanlan.zhihu.com/p/61 ...