• python3 魔术方法汇总


     

    一、__new__()

    """
    解释:
    	此方法是用来生成类的实例的,它是类里面第一个执行的函数
    	它至少要有一个参数 通常命名为cls,cls表示需要实例化的类,此参数在实例化时由Python解析器自动提供。
    	new()方法是在类准备将自身实例化时调用。
    	new()方法始终都是类的静态方法,即使没有被加上静态方法装饰器
    	此函数不返回值或者失败  则 init不会执行
    
    作用:
    	用在构造方法init()建造实例之前
    	在Python 中存在于类里面的构造方法init()负责将类的实例化,而在init()调用之前,new()决定是否要使用该init()方法,因为new()可以调用其他类的构造方法或者直接返回别的对象来作为本类 的实例。
    """
    class New():
    
    	def __new__(cls, *args, **kv):
    		print(args, kv)
    		if not hasattr(cls, '_inst'):
    			cls._inst = super(New, cls).__new__(cls)
    		return cls._inst
    		# return object.__new__(cls) 
    
    a = New('new', jxk=12)
    

      

    二、__init__()

    """
    解释:
    	在创建一个对象时 默认自动调用
    
    作用:
    	始化函数,用来完成一些默认的设定
    """
    class Init():
    
    	def __init__(self, name):
    		print(self, name)
    
    a = Init('new')
    

      

    三、__call__()

    """
    解释:
    	在Python中,函数其实是一个对象:因为函数可以被调用,所以函数被称为可调用对象
    	一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。
    作用:
    	可以把实例对象用类似函数的形式表示,进一步模糊了函数和对象之间的概念
    """
    class Call(object):
    
    	def test(self):
    		print(1)
    
    	def __init__(self):
    		print("我是构造函数! ")
    
    	def __call__(self):
    		print("当把本类实例化并作为函数调用时 自动调用本方法")
    
    c = Call()
    c() #调用
    

      

     四、__str__()

    """
    解释:
    	当实例化的类对象 被str() 函数调用时 自动触发此方法
    
    作用:
    
    """
    class Str_(object):
    	def __str__(self):
    		print('你调用了str 方法!')
    		
    		return '返回值必须为字符串'
    
    
    s = Str_()
    str( s )
    

      

    参考资料: https://blog.csdn.net/Ka_Ka314/article/details/80402143

  • 相关阅读:
    《驱动学习
    《海思3521D
    《uboot网卡驱动分析》
    《驱动学习
    《驱动学习
    《驱动学习
    对应第一篇文章api的编写
    Dot模板的使用小结2
    项目代码摘抄,dot的用法之1
    文字的默认基线是底部对齐的
  • 原文地址:https://www.cnblogs.com/jxkshu/p/12840916.html
Copyright © 2020-2023  润新知