Python魔法方法:__dir__(self) 方法
Posted youzhouliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python魔法方法:__dir__(self) 方法相关的知识,希望对你有一定的参考价值。
Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,它们是面向对象的 Python 的一切。它们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了某一个魔法方法,那么这个方法就会在特殊的情况下自动被 Python 所调用。
功能
定义对象被 dir() 函数调用时的行为。
参数
self 表示对象本身。
返回值
一个可迭代对象。
示例:
class MyTest(object):
def __init__(self):
self.name = '阿珍'
self.age = 18
def __dir__(self) -> 'Iterable[str]':
dic = self.__dict__.copy()
if 'name' in dic:
dic.pop('name')
return dic
sample = MyTest()
print(dir(sample))
class CLanguage:
def __init__(self, ):
self.name = "C语言中文网"
self.add = "http://c.biancheng.net"
def say(self):
pass
clangs = CLanguage()
print(dir(clangs))
通过 dir() 函数,不仅仅输出本类中新添加的属性名和方法(最后 3 个),还会输出从父类(这里为 object 类)继承得到的属性名和方法名。
dir() 函数的内部实现,其实是在调用参数对象 __dir__() 方法的基础上,对该方法返回的属性名和方法名做了排序。
所以,除了使用 dir() 函数,可以自行调用该对象具有的 __dir__() 方法:
class CLanguage:
def __init__(self, ):
self.name = "C语言中文网"
self.add = "http://c.biancheng.net"
def say(self):
pass
clangs = CLanguage()
print(clangs.__dir__())
使用 __dir__() 方法和 dir() 函数输出的数据是相同,仅仅顺序不同。
以上是关于Python魔法方法:__dir__(self) 方法的主要内容,如果未能解决你的问题,请参考以下文章