Python 带下划线的方法和不带下划线的方法之间有什么区别,特别是那些由dir()方法列出的方法?

Python 带下划线的方法和不带下划线的方法之间有什么区别,特别是那些由dir()方法列出的方法?,python,methods,Python,Methods,在python中使用dir()方法时,为什么返回的一些方法会被下划线包围?我应该使用这些方法吗 例如,dir([1,2,3,4,5,6])返回: [“添加”, "类",, “\uuuu包含”, "德拉特",, "delitem",, "delslice",, "医生",, "情商",, '格式'', "格",, '获取属性'', “\uuu获取项目”, '获取切片'', "gt",, “散列”, "iadd",, "伊穆尔",, "初始化",, “iter”, "乐",, "伦",, "它",,

在python中使用
dir()
方法时,为什么返回的一些方法会被下划线包围?我应该使用这些方法吗

例如,
dir([1,2,3,4,5,6])
返回:

[“添加”,
"类",,
“\uuuu包含”,
"德拉特",,
"delitem",,
"delslice",,
"医生",,
"情商",,
'格式'',
"格",,
'获取属性'',
“\uuu获取项目”,
'获取切片'',
"gt",,
“散列”,
"iadd",,
"伊穆尔",,
"初始化",,
“iter”,
"乐",,
"伦",,
"它",,
"多",,
"新",,
"新",,
“减少”,
“uuu减少uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,
"报告",,
"逆",,
"rmul",,
"设置属性",,
'设置项'',
“uuu setslice”,
"大小",,
"街",,
“\uuuu子类钩子”,
“追加”,
“伯爵”,
“扩展”,
"索引",,
“插入”,
“流行音乐”,
“删除”,
“反向”,
“排序”]

这些方法中的最后九种是常规使用的方法

当我查看文档时,我很少看到这些方法是什么:

如果对象有一个名为_dir__()的方法,则将调用此方法,并且必须返回属性列表。这允许实现自定义_ugetattr__;()或_ugetattribute__;()函数的对象自定义dir()报告其属性的方式


谢谢。

与其他语言(Java、C++)不同,Python中没有“私有”方法(即不能在定义它们的类之外调用的方法)。因此,任何调用方都可以从任何对象调用内部方法。

按照惯例,您不应该调用对象的那些方法,以避免类的程序员没有预测到的不必要的后果。

请仔细阅读。因此,这些是python本身而不是用户在相应数据类型上使用的方法?@DirkDunn,是的,这些方法由python本身使用-通常是双下划线的方法。但是,类本身(如上面示例中的类“list”)可能以在类之外使用不安全的方式使用其中一些方法。第三方类通常在方法名之前有一个下划线。变量和常量遵循相同的约定。