假设你有一个类Personclass Person:
name = "Samuel"
age = 50
country = "India"
def method1(self):
print("Method 1")
print(dir(Person))
上述程序的输出如下所示:
^{pr2}$
从上面的输出中可以看到,它返回该对象的有效属性的排序列表。如果查看类Person:
姓名、年龄、国家
是属性,method1是该类的方法。因此,当您使用dir(Person)时,它将显示该类的所有属性。在
对于不同类型的对象,默认dir()机制的行为有所不同,因为它试图生成最相关而不是最完整的信息:如果对象是模块对象,则列表包含模块属性的名称。在
如果对象是类型或类对象,则列表包含其属性的名称,并递归地包含其基的属性的名称。在
否则,列表包含对象的属性名、类的属性名以及类基类的递归属性名。在
例如a = [1,2,3,45]
print(dir(a))
这将打印:['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__init_subclass__', '__iter__', '__le__',
'__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__reversed__', '__rmul__',
'__setattr__', '__setitem__', '__sizeof__', '__str__',
'__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend',
'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
如果你看不到以前的名字,你可以在这里看到。这是因为不同类型的对象具有不同的属性并且通过这些属性,您可以以不同的形式使用这些对象。
{cd2>你可以使用len I assume refers to len()
通常,len()是用于获取对象长度的公共接口。__len__方法是支持长度概念的对象期望实现的实现。len()调用__len__()I think I see some member functions in the returned list of attributes, len I assume refers to len(), but what are all these other things listed?