python 类相关 下划线相关 __init__

1、静态方法

class C(object):
    @staticmethod
    def f():
        print('runoob');
 
C.f();          # 静态方法无需实例化
cobj = C()
cobj.f()        # 也可以实例化后调用


静态方法:无法访问类属性、实例属性,相当于一个相对独立的方法,跟类其实没什么关系,换个角度来讲,其实就是放在一个类的作用域里的函数而已。
类成员方法:可以访问类属性,无法访问实例属性。

下划线

_ 单下划线:python中不存在真正的私有方法,可以在类的方法或属性前加一个 单下划线,意味着此方法或属性不应该去调用,它并不属于API,例:

class BaseForm(StrAndUnicode):
    ...
 
    def _get_errors(self):
        "Returns an ErrorDict for the data provided for the form"
        if self._errors is None:
            self.full_clean()
        return self._errors
    
    errors = property(_get_errors)

当想使用_get_errors()时,可以通过errors实现。

__ 双下划线:避免子类重写此方法,只允许在该类的内部使用。

前后双下划线

  1. __init__
    一个目录如果包含了 __init__,它就变成了一个包(package),它可以是空的,但必须存在,其他程序才可以从这个目录导入相应的模块或函数,这样的目录称为 namespace package。
    在python 3.3之后,__init__文件可以不需要。

  2. __name__
    标识模块名字的系统变量。
    1、如果模块是被导入的, __name__为模块的名字。
    2、如果模块是被直接运行的,__name____main__

原文地址:https://www.cnblogs.com/qev211/p/15162697.html