实例化和变量初始化

__init__(): 是初始化方法

__new__(): 才是类的构造方法,创建实例,返回实例

1. 如果覆盖__new__()方法,必须返回对象,否则__init()__方法不会被调用

    return supper(A, cls).__new(cls)__

2. __new__(), __init__()参数须一致

3. 子类如果调用父类的__init()__,父类的__init__()不会调用

supper(B, self).__init()__

用处:

1. 覆盖__new__()改变类的行为:

class UserSet(frozenset):

    def __new__(cls, *args):

    if args and isinstance (args[0], basestring):

    args = (args[0].split('a'), ) + args[1:]

    return super(UserSet, cls).__new__(cls, *args)

print UserSet("I am testing")

print frozenset("I am testing")

2. 实现工厂模式

你可能感兴趣的:(实例化和变量初始化)