__new__函数

在实例化开始之后,在调用 __init__()方法之前,Python 首先调用 __new__() 方法

#单例1
class Singleton1(object):_inst=None# 在实例化开始之后,在调用 __init__() 方法之前,Python 首先调用 __new__() 方法def __new__(cls,*args, **kwargs):if cls._inst is None:# 如果要得到当前类的实例,应当在当前类中的 __new__() 方法语句中调用当前类的父类的 __new__() 方法cls._inst = super(Singleton1, cls).__new__(cls) #相当于object.__new__(cls)return cls._inst#单例2
class Singleton2(object):def __new__(cls,*args, **kwargs):if not hasattr(cls,'_inst'):cls._inst = object.__new__(cls)return cls._instif __name__ == '__main__':print(Singleton1())print(Singleton1())print(Singleton2())print(Singleton2())
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Person(object):def __init__(self, name, age):self.name = nameself.age = agedef __new__(cls, name, age):if 0 < age < 150:  return super(Person, cls).__new__(cls) #return object.__new__(cls)else:return Nonedef __str__(self):return '{0}({1})'.format(self.__class__.__name__, self.__dict__)print(Person('Tom', 10))
print(Person('Mike', 200))

@staticmethod、@classmethod修饰符

我们知道对于一个普通的类,我们要使用其中的函数的话,需要对类进行实例化,而一个类中,某个函数前面加上了staticmethod或者classmethod的话,那么这个函数就可以不通过实例化直接调用

  • @staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。
    如果在@staticmethod中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。
  • @classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。
    而@classmethod因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Animal(object):name = 'dog'def __init__(self,name):self.name = namedef intro1(self):print('there is a %s'%(self.name))@staticmethoddef intro2():print('there is a %s')@classmethoddef intro3(cls):print('there is a %s'%(cls.name))Animal('cat').intro1()
Animal.intro2()
Animal.intro3()

@property修饰符

property使方法像属性一样调用,就像是一种特殊的属性

有参函数时,@name.setter

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Animal(object):def __init__(self,name):self.name = name@propertydef intro(self):print('there is a %s eating'%(self.name))@intro.setterdef intro(self,value):print('there is %d %s eating'%(value,self.name))a = Animal('cat')
a.intro
a.intro=2

@修饰符

从第一个函数修饰符开始,自下而上做参数传递

#无参修饰 ,无参数时不需要调用
def log1(func):func()
@log1
def test():print('test:')#有参修饰
def log2(func):def inner(*args, **kwargs):func(*args, **kwargs)return inner
@log2
def test(num):print('testlog2:',num,test.__name__)
test(20) #相当于log(test(20))from functools import wraps
#可以看见@wraps可以保证装饰器修饰的函数的name的值保持不变#不参数的装饰器
def log3(func):@wraps(func)def inner(*args, **kwargs,):func(*args, **kwargs)return inner
@log3
def test(num):print('testlog3:',num,test.__name__)
test(30) #相当于log(test(30))

@pysnooper修饰符

日志打印工具,用显示函数间的入参和返回值的变化

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import pysnooper@pysnooper.snoop()
#@pysnooper.snoop('log.log')
def lisy(a):b=[x - 10 if x in [11, 12, 13] else x for x in a]return b
print(lisy([1,2,3,11,12,13,'111',222]))

python-自定义@修饰符相关推荐

  1. python函数修饰符@的使用

    python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个 ...

  2. Mongoose 预定义模式修饰符 Getters 与 Setters 自定义修饰符

    一.mongoose 预定义模式修饰符 lowercase.uppercase .trim mongoose 提供的预定义模式修饰符,可以对我们增加的数据进行一些格式化. var UserSchema ...

  3. python中@修饰符用法

    @修饰符  '@'符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行.也就是说@A def f(): 是非法的. 只可以在模块或类定义层内对函 ...

  4. python正则表达式修饰符_python正则表达式,看完这篇文章就够了...

    今天讲什么? 今天以为大学同学微信聊,说最近在看我的公众号,她是国企汽车制造业的,但也要用python进行数据分析...之前看了往期的python字符串操作内容,里面说到了正则表达式,想学习一下... ...

  5. python的@修饰符

    '@'引用已有的函数,对下面的函数进行修饰.引用函数必须放在修饰函数的上面,引用函数的返回值,返回给被修饰的函数 一个简单的栗子: 1 def funA(fn): 2 print('A') # 输出A ...

  6. python 权限修饰符

    阿里云大学人工智能学前小测验-Python测试 10.Python权限修饰正确的是 A. 标识符开头无下划线,该变量或方法为公有权限 B. 标识符开头双下划线,该变量或方法为私有权限 C. 标识符开头 ...

  7. python自定义修饰器_Python概述

    #Version 3.0 本章主要解决:为什么学Python,Python是什么样的语言,怎么学Python,怎样做老庄才给你及格或优秀. 一.为什么学Python 学习编程要比学习英语更重要,因为编 ...

  8. 有一个fuck叫做wfg,还是大写---python的@修饰符解析

    引用:http://coolshell.cn/articles/11265.html @-Decorator的本质 线上代码: def fuck(fn):print "fuck %s!&qu ...

  9. python中函数修饰符_python中的函数修饰符

    首先,什么是函数修饰符?函数修饰符就是对原有函数做一层包装.比如有以下两个函数: def func1(): print 'I am function func1' def func2(): print ...

  10. python @修饰符_python函数修饰符@的使用方法解析

    python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个 ...

最新文章

  1. R语言保存图片为特定dpi值(分辨率)的图像
  2. python pandas DataFrame 查找NaN所在的位置
  3. android Adapter使用详解
  4. Nginx安装,Nginx静态缓存,Nginx Gzip压缩,Nginx负载均衡,Nginx方向代理,Nginx+Tomcat+Redis做session共享...
  5. PTA-7-8 删除重复字符 (20分)(C语言)
  6. 谈谈lucene的DocValues特性之SortedNumericDocValuesField
  7. python数字运算程序_python03 一些简单的数字运算
  8. 1229: 求三个数的平均数
  9. 120日均线金叉250日均线是大牛市来临的重要信号
  10. 购买代购的产品算违法吗——看空姐代购被判刑有感
  11. 锐龙r75800u参数 r7 5800u怎么样
  12. 苹果又一次将国产手机遮羞布撕下了,证明了谁才是创新领导者
  13. fusioncharts 嵌套饼图_【Tableau 图表】你是不是真的需要一个跑道图呢?
  14. C#解析JSON几种方式
  15. PHP常用第三方包,php第三方包管理
  16. 机器人genghis_iRobot的智慧家居:从扫地机器人和擦地机器人的联动开始
  17. 黑苹果 选择语言 点不了_作为一个自媒体人,我在618选择了这些硬件组装了一台黑苹果电脑...
  18. 云商之softlayer与saltstack
  19. 一方库、二方库、三方库 概念
  20. Java实现邮箱发送验证码(以QQ邮箱为例)

热门文章

  1. [ZigBee] 9、ZigBee之AD剖析——AD采集CC2530温度串口显示
  2. linux下定时任务不能执行
  3. 层模型--绝对定位、相对定位、固定定位
  4. ACM在线测评系统评测程序设计与python实现
  5. 击中-击不中变换(约束)—lhMorpHMTC
  6. java 打印 排序 数字塔_求助,用循环方法输出以下数字塔
  7. DATA - RANGE OF
  8. java 调用SAP RFC函数错误信息集锦
  9. sap 采购订单中收货容差的取值顺序
  10. 你知道Material Type(ROH,HALB,FERT…)为什么缩写是ROH,HALB,FERT吗?哈哈哈