Pytho中下划线_、__的区别、常见魔法函数详解

单下划线 _method_name

Python中没有真正的private方法,规定类中_开头的为私有属性或方法,则外部不应该调用:

Class A():def __init__(self):self._x = 1a = A()
print(self._x)

上方代码输出为 1
这个属性/方法是能被调用的,但出于某种约定,我们是一般不去调用的。

双下划线 __method_name

__开头的为私有属性/方法,只能self访问,且__开头的不能被子类重写:

Class A():def __init__(self):self.__x = 1a = A()
print(self.__x)

上方代码输出为 ‘A’ object has no attribute ‘__x’

前后双下划线 method_name

为Python的魔法函数,一般是系统定义名字,类似于__init__(),一般是给Python调用的。
常见魔法函数:

  1. 字符串表示: __str__ __repr__

    • __str__(): 返回打印该对象时的结果字符串
  2. 迭代相关: __iter__ __next__

    • __iter__(): 返回一个迭代器,一个类只要实现了__iter__方法,就是可迭代对象,for循环自动调用__iter__来获取一个迭代器
    • __next__(): 自定义一个类,只要实现了__next__方法,就是迭代器
  3. 可调用: __call__

  4. 集合、序列相关: __len__ __getitem__ __setitem__ __delitem__ __contains__

  5. 属性相关:__getattr____setattr____getattribute__

  6. with上下文管理器:__enter____exit__


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部