当我检查元组类型的特殊方法
In [114]: [m for m in dir(tuple) if m.startswith("__")]
Out[114]:
['__add__',
'__class__',
'__contains__',
'__delattr__',
'__dir__',
我发现有些dudermethods既不继承自object
也不继承自type
In [115]: meta_methods = set(dir(object)) | set(dir(type))
In [116]: len(meta_methods)
Out[116]: 43
In [117]: [m for m in dir(tuple) if m not in meta_methods]
Out[117]:
['__add__',
'__contains__',
'__getitem__',
'__getnewargs__',
'__iter__',
'__len__',
'__mul__',
'__rmul__',
'count',
'index']
有8种特殊方法,它们不是从object
和type
继承的。
这些方法来自哪里?
答案 0 :(得分:2)
如果我给你看了这堂课:
class Foo:
def this_is_a_method(self):
print('tacos')
或者可能是此类:
class Underscores:
def __this_is_a_method_with_underscores__(self):
print("It's just a method.")
def __len__(self):
return 12
您会惊讶于它有object
和type
没有的方法吗?
与tuple
相同。 tuple
有其自己的方法。这是类可以做的事情-它们可以有自己的方法。并非所有方法都必须来自object
或type
。这是类系统中非常普通的部分。