Python中的__new__()方法的使用实例

原创 2017年08月18日 23:00:16

 __new__()是在新式类中新出现的方法,在Python2.7以前的版本在定义类时j都要显示的继承object才能使用。

object将__new__()方法定义为静态方法,并且至少需要传递一个位置参数cls,cls表示需要实例化的类,此参数在实例化时由Python解释器自动提供。

__new__()方法始终都是类的静态方法,即使没有被加上静态方法装饰器。__new__方法接受的参数虽然也是和__init__一样,但__init__是在类实例创建之后调用,而__new__()方法是在类准备将自身实例化时调用, __new__方法正是创建这个类实例的方法。


举个实例来说明它的用途,比如说要定义一个Person类,在实例化一个对象时对初始化参数进行检查,如果合法就创建实例,如果不合法就不创建实例返回None


class Person(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __new__(cls, name, age):
        if 0 < age < 150:
            return object.__new__(cls)
            # return super(Person, cls).__new__(cls)
        else:
            return None

    def __str__(self):
        return '{0}({1})'.format(self.__class__.__name__, self.__dict__)

print(Person('Tom', 10))
print(Person('Mike', 200))

Person({'age': 10, 'name': 'Tom'})
None
>>> 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

关注CSDN程序人生公众号,轻松获得下载积分

关注公众号 在公众号里回复“”秘密“”两个字 返回 http://task.csdn.net/m/task/home?task_id=398 领取奖励 提示:根据公众号里的自动回复,完成...

古老的task机制

唯一的疑问是TASK_RUNNING后能schedule么 经常看到一些代码,比如 set_current_state(TASK_UNINTERRUPTABLE) 等等 实际上关键有这么几点 1. s...

Python 之 __new__() 方法与实例化

Python 之 __new__() 方法与实例化 __new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在 Python 中存在于类里面的构造方法 __...

python中的 new-style class 及其实例详解

1.1. 5.2 new-style Class 及其实例 前面我提到 python 2.2 中引入了 new-style 对象模型. new-style class 及其实例与 Class...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)