python 类相关 下划线相关 __init__

2023-01-01,,,

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实现。

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

前后双下划线

    __init__

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

    在python 3.3之后,__init__文件可以不需要。

    __name__

    标识模块名字的系统变量。

    1、如果模块是被导入的, __name__为模块的名字。

    2、如果模块是被直接运行的,__name____main__

    __repr__

    默认显示 "类名+object at+内存地址",可以重写使其输出想要的信息

class CLanguage:
pass
clangs = CLanguage()
print(clangs) # 默认
>> <__main__.CLanguage object at 0x000001A7275221D0> # 修改后
class CLanguage:
def __init__(self):
self.name = "C语言中文网"
self.add = "http://c.biancheng.net"
def __repr__(self):
return "CLanguage[name="+ self.name +",add=" + self.add +"]"
clangs = CLanguage()
print(clangs)
>> CLanguage[name=C语言中文网,add=http://c.biancheng.net]
    __call__

    使得类实例对象可以像调用普通函数那样,以对象名()形式使用

    Python 中,凡是可以将() 直接应用到自身并执行,都称为可调用对象。可调用对象包括自定义的函数、Python 内置函数以及本节所讲的类实例对象。

    对于可调用对象,实际上“名称()”可以理解为是“名称.call()”的简写

class CLanguage:
# 定义__call__方法
def __call__(self,name,add):
print("调用__call__()方法",name,add)
clangs = CLanguage()
clangs("C语言中文网","http://c.biancheng.net") >> 调用__call__()方法 C语言中文网 http://c.biancheng.net

hasattr() getattr() setattr()

    hasattr()

    判断某个类实例对象是否包含指定名称的属性或方法,语法格式: hasattr(obj,name)

class CLanguage:
def __init__ (self):
self.name = "C语言中文网"
self.add = "http://c.biancheng.net"
def say(self):
print("我正在学Python")
clangs = CLanguage()
print(hasattr(clangs,"name"))
print(hasattr(clangs,"add"))
print(hasattr(clangs,"say")) >>True
True
True

python 类相关 下划线相关 __init__的相关教程结束。

《python 类相关 下划线相关 __init__.doc》

下载本文的Word格式文档,以方便收藏与打印。