美文网首页
Python 常见双下划线关键字的用法

Python 常见双下划线关键字的用法

作者: AlaricMurray | 来源:发表于2017-07-05 10:41 被阅读0次

1.__init__

__init__ 方法通常用在初始化一个类实例的时候,例如:

class Person(object):

      def __init__(self, name, age):

      self.name = name

      self.age = age

2.__str__

__str__用来返回对象的字符串表达式。例如:

class Person(object):

     def __init__(self, name):

          super(Person, self).__init__()

          self.name = name

    def __str__(self):

         return'Hola,%s' % self.name

lina = Person('Lina')

print(lina)

在我们编写一个新的Python类的时候,总是在最开始位置写一个初始化方法__init__,以便初始化对象,然后会写一个__str__方法,方面我们调试程序。

3.__new__

__new__方法的调用是发生在__init__之前的

class Person(object):

     def __new__(cls,*args, **kwargs):

          print('new called')

          return object.__new__(cls)

     def __init__(self, name):

          print('init called')

          super(Person, self).__init__()

          self.name = name

     def __str__(self):

          return'Hola,%s' % self.name

lina = Person('Lina')

print(lina)

__new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供

__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例

__init__ 和 __new__ 最主要的区别在于:

1.__init__ 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。

2.__new__ 通常用于控制生成一个新实例的过程。它是类级别的方法。

__new__ 的作用

依照Python官方文档的说法,__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。还有就是实现自定义的metaclass。

4.__name__和__main__

为了区分 主执行代码和被调用文件,python引入了变量:__name__。__name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian__:”后面的内容。

5.__slots__

为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性。比如,只允许对Student实例添加name和age属性:

class Student(object):

__slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称

相关文章

网友评论

      本文标题:Python 常见双下划线关键字的用法

      本文链接:https://www.haomeiwen.com/subject/yfgccxtx.html