在Python中,为什么contains()是str对象的隐藏方法?

时间:2017-02-17 19:51:18

标签: python

通常我会检查字符串中是否存在子字符串。在Python中,我可以使用string1 = r'c:\users\username\documents\code\crime_data.csv' print(string1.__contains__('username')) 方法或使用print('username' in string1) 运算符执行此操作,如下所示:

模式1:

__contains__

模式2:

String.contains()

两者都适合我,但我想知道为什么{{1}}隐藏方法,如果模式2优先于1,那么为什么呢?其他编程语言(如C#)在其标准库中都有{{1}}方法。

1 个答案:

答案 0 :(得分:3)

重新定义方法in可以重载__contains__运算符。 这与例如没有区别。 __add__+),__mul__*)等等。所以重点不是要隐藏方法,而是要使其符合'的惯例。魔术方法',用于重载运算符。