Python 中新式类的内置方法

  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

posted @ 2017-03-01 14:07  Rubick7  阅读(517)  评论(0)    收藏  举报