python的__init__几种方法总结

1 __init__这个方法一般用于初始化一个类

class Test(object):
    """
    用于初始化类
    """
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def res(self):
        return (self.a, self.b)

t = Test(100, 200)
print t.res()


"""
(100, 200)
"""

2 __str__ 这是一个内置方法, 只能返回字符串, 并且只能有一个参数self

class Test(object):
    """
    用于初始化类
    """
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def res(self):
        return (self.a, self.b)

    def __str__(self):
        return '这是一个类'

t = Test(100, 200)
print '-----'
# print t = print t.__str__
print t

3 __new__() 方法是创建类实例的方法, 创建对象时调用, 返回当前对象的一个实例

class Test(object):
    def __init__(self, age):
        print '__init__在运行'
        self.age = age

    def __new__(cls, age):
        print '__new__在运行'
        return super(Test, cls).__new__(cls, age)

t = Test(20)

上例的执行逻辑:

先执行t = Test(20)
首先执行age参数来执行Test类的__new__()方法, 这个__new__方法会返回Test类的一个实例(通常使用)

4 __call__() 对象通过提供一个__call__(self, *args, *kwargs)方法可以模拟函数的行为, 如果一个对象提供了该方法, 可以向函数一样去调用它

class Test(object):
    def __init__(self):
        print (100)

    def __new__(cls):
        print (200)
        return super(Test, cls).__new__(cls)

    def __call__(self, x):
        print 300

t = Test()
t(100)

Leave a Reply