当我在python解释器中键入help('string')
时,我获得有关字符串类的信息。在那里,upper()
被表示为一个函数。但我只能将其称为"hi".upper()
而非upper("hi")
的方法
因此可以假设任何方法都将被指示为内置模块的文档字符串中的函数。然而,当我执行help('list')
时,列表类的方法在文档字符串中表示为方法!!
为什么会这样?只因为撰写教条的人不一致或者不同的人写了吗?或者这些方法(称为“函数”与文档字符串中称为“方法”的方法)实际上具有不同的属性?
答案 0 :(得分:3)
当您搜索help('string')
时,您正在寻找 string
模块的文档字符串。如果您执行help(str)
或help('str')
,您将获得str
类型的文字字符串,此处显示upper
作为方法!
正如您在此处所见,upper
模块中的函数string
实际上是一个函数,而不是一个方法:
>>> upper('hi')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'upper' is not defined
>>> 'hi'.upper() # method from the str type
'HI'
>>> from string import upper
>>> upper('hi') # function from the string module
'HI'
答案 1 :(得分:2)
您的意思是help('str')
,而不是help('string')
。 str
是一种类型,string
是一个提供处理字符串函数的模块。
答案 2 :(得分:1)
您正在创建该对象的实例,然后在该实例上调用帮助。
所以这些都有效:
help(1)
help({})
help([])
help('')
help(dir)
help(help)
帮助抓取该实例的文档字符串,并将其返回给您。 当您创建自己的对象时,您可以输入有用的文档字符串或任何您想要的内容。
答案 3 :(得分:1)
你所看到的并没有错。
>>> help('string')
将显示string
模块文档。看起来里面有一个upper
函数:
>>> import string
>>> string.upper('hello')
'hello'
我会说这个upper
与你所做的相同:
>>> 'hello'.upper()
但我不确定。
请注意,字符串''
是str
类型,而不是string
类型。这意味着您可能正在寻找:
>>> help('str')
在这里你也会看到str.upper
方法。
答案 4 :(得分:0)
这是因为'string'
是string
。 'list'
要获得lists
的类似结果,请尝试help([])