Python面相对象之类里面常用的装饰器(3)
在类里面,可以设置类的全局变量,也就是静态字段,让实例化的所有对都具有该属性
class god:
country = 'china'#这个字段在类里面保存,只有一份,叫静态字段,表示每个对象具有的属性 def __init__(self,name): self.name =name#普通字段,保存在实例化之后的对象中 def shit(self):#普通方法,保存在类中,实例化之后的对象也可以通过反射找到类方法,如hasattr
print('shit')
def she(self):
print('黄赌毒') obj = god('Jay')
print(obj.country)
类里面有几个常用的装饰器
class god:
country = 'china' def __init__(self,name):
self.name =name
@classmethod#这个是类方法,保存在类里面,通过类直接调用
def xxxx(cls):#必须要有cls参数,全称class,方法被调用时候类名被当做cls传进去,相对于静态方法的特殊情况,就是多了一个参数
print('xxxxx',cls)
def shit(self):
print('shit')
@staticmethod#这是静态方法,装饰类里面的方法,使该方法变为静态方法,没有了self,保存于类里面
def she():
print('黄赌毒') god.she()#静态方法直接使用类调用,一般静态方法都使用类访问
god.xxxx()
print(god)
obj = god('Jay')
obj.she()#实例也可以直接调用,但不被建议
执行结果如图
还有一个property
class god:
country = 'china' def __init__(self,name):
self.name =name @property#原来通过实例的调用(加括号)才能访问,现在通过字段就能访问了,实际是将方法伪造成了字段
def shit(self):#这个特性不能再传参数了
return '%s shit' % self.name obj = god('Jay')
r1=obj.shit
print(r1)
结果如图
我们也可以用shit.setter装饰器更改获得的字段
如下代码,不过这些方法很少用
class god:
country = 'china' def __init__(self,name):
self.name =name @property#原来通过实例的调用(加括号)才能访问,现在通过字段就能访问了,实际是将方法伪造成了字段
def shit(self):#这个特性不能再传参数了
return '%s shit' % self.name
@shit.setter#这个方法用于接收传回来的参数,进行一些更改,专门用于设置
def shit(self,value):
print(value)
self.name=value#更改属性 obj = god('Jay')
print(obj.shit)
obj.shit='b'
print(obj.name)
结果如下图
概括起来,类里面主要结果如下
Python面相对象之类里面常用的装饰器(3)的更多相关文章
- python is、==区别;with;gil;python中tuple和list的区别;Python 中的迭代器、生成器、装饰器
1. is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同 == 比较的是两个对象的内容是否相等 2. with语句时用于对try except finally 的优 ...
- python 类中的某个函数作为装饰器
在python的类中,制作一个装饰器的函数, class A: def wrapper(func): ###装饰器 def wrapped(self,*arg,**kwargs) ... return ...
- Python 闭包、迭代器、生成器、装饰器
Python 闭包.迭代器.生成器.装饰器 一.闭包 闭包:闭包就是内层函数对外层函数局部变量的引用. def func(): a = "哈哈" def func2(): prin ...
- Python使用property函数和使用@property装饰器定义属性访问方法的异同点分析
Python使用property函数和使用@property装饰器都能定义属性的get.set及delete的访问方法,他们的相同点主要如下三点: 1.定义这些方法后,代码中对相关属性的访问实际上都会 ...
- Python的高级特性7:闭包和装饰器
本节跟第三节关系密切,最好放在一起来看:python的高级特性3:神奇的__call__与返回函数 一.闭包:闭包不好解释,只能先看下面这个例子: In [23]: def outer(part1): ...
- python关于函数调用作为参数的说明&&装饰器
python关于函数调用作为参数的说明&&装饰器 简单的: 先看代码: def out(): print('out') def inner(): return 'inner' retu ...
- python面相对象进阶
1. 类的成员 python 类的成员有三种:字段.方法.属性 字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段 属于对象,只有对象创建 ...
- Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器
今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...
- python 基础——常用日志装饰器
from functools import wraps class logit(): def __init__(self, logfile='out.log'): self.log = logfile ...
随机推荐
- html常用的小技能
在html中有很多常用小技能,记下来,下次直接看自己的,就不用四处找啦! 1.<li>标签去掉点号:list-style-type:none; 去掉前: 去掉后: 2.<li> ...
- js 中//<![CDATA[ 意义
CDATA内部所有东西都会被解析器忽略,加入文本中包含了大量< 和 $符号,就像编程中经常出现的情况一样,那么这个元素就可以被定义为一个CDATA部分 ,CDATA 区段开始于 "&l ...
- IOS截取部分图片
截取部分图片这么简单: - (void)loadView { [[UIApplication sharedApplication] setStatusBarHidden:YES withAni ...
- Excel如何显示隐藏列?
我们在工作中遇到excel表格数据太多比较负责,同时字段太多需要隐藏一些不重要的字段方便阅读和分析其他数据那么我们如何取消隐藏数据呢?隐藏列比较简单选中点隐藏就可以了,取消隐藏需要一些小的技巧才能灵活 ...
- CentOS创建不需要输入密码的sudo用户
linux 怎么让普通用户使用sudo权限不需要输入密码. 在网上看到很多资料,都只说到了在/etc/sudoers添加下列行即可: username ALL=(ALL) ...
- java算法面试题:排序都有哪几种方法?请列举。用JAVA实现一个快速排序。选择冒泡快速集合至少4种方法排序
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...
- 线段树和zkw线段树
作者作为一个蒟蒻,也是最近才自学了线段树,不对的地方欢迎大佬们评论,但是不要喷谢谢 好啦,我们就开始说说线段树吧 线段树是个支持区间操作和查询的东东,平时的话还是蛮实用的 下面以最基本的区间加以及查询 ...
- 基础篇(2):c++顺序结构程序设计
一个程序最基本的结构莫过于3种:顺序,选择,循环.这篇讲讲顺序结构. c++语言的运算符与表达式数量之多,在高级语言中是少见的,也使得它的语言功能十分完善. c++的运算符有单目与双目之分(作用于一个 ...
- linux中搭建公网ftp服务器
Linux搭建ftp服务器汇总整理 一.检查linux中是否已经安装vsftpd服务端软件 rpm -qa |grep vsftpd 二.卸载linux中的vsftpd服务端软件 rpm -e vsf ...
- 【jenkins】【java】【tomcat】windows host key verification failed
适用于windows系统 出现这个问题的原因tomcat启动的用户找不到本地公私钥路径 如果tomcat 启动时候选择 local system account (默认此选项),请把你的公私钥文件(i ...