Python中分为经典类和新式类,新式类是在Python2.2以后才有的新特性,其直接可看到的区别就是定义方式不同,新式类是直接继承至object类或者其他类而成的,而经典类就是直接定义的。
在新式类中有一些特殊的方法实现所有对象的默认行为:
1, __init__ 和 __new__:
这两个方法都是用来创建object的子类对象的,__new__是一个静态方法,用于创建类的实例,然后再使用__init__来初始化实例.PS:__metaclass__是创建类时起作用的方法,所以,在新式类中的调用: __metaclass__, __new__, __init__。我们可以在这些方法里显示的定义一些操作来达到自己想要的功能。
2, __delattr__, __getattribute__, __setattr__方法:
这几个方法是在对属性进行操作时使用的方法,从字面上可以看出是对属性进行删除,获得,设置操作时调用的方法
3, __repl__, __str__:
这两个方法是用于定义一个类的可打印对象的。当使用了print的时候就会调用这个里面的字符串。
在这里课外延伸一下,使用__new__方法来实现一个单例模式:
class Singlton(object):
def __new__(cls, *arg, **kwarg):
if hasattr(cls, "_instance")
cls._instance = super(Singlton, cls).__new__(cls, *arg, **kwarg)
return cls._instance
class A(Singlton):
a = 1