我通过python速成课程学习python,并附带了这个字符串和方法。它只说名字后面的点(.)在 name.title() 告诉python使 title() 方法对变量名进行操作。
name.title()
title()
bq3bfh9z1#
并非总是可以动态创建方法:
from types import MethodType def fn(x): return x.var class A: def __init__(self): self.var = 20 obj = A() method_ = MethodType(fn, obj) print(method_) print(method_())
输出:
<bound method fn of <__main__.A object at 0x000001C5E3F01FD0>> 20
方法是类型的示例 MethodType 而且它还有一个绑定到它的对象,当方法被调用时,它的第一个参数总是被该对象填充。在这里 fn() 函数的第一个参数(x)将用 obj 对象
MethodType
fn()
obj
nvbavucw2#
上面的答案很精确,但我想补充一点。实际上,方法是将对象作为参数的函数,然后根据这些参数返回值。由于python是一种面向对象的语言,因此python中的所有内容都是对象。当你打电话的时候 name.title() :然后,python搜索 title() 方法 name 对象。由于所有方法都指定将对象作为参数:
name
`def title(self): ...+ `
这就是类和 self 这里的参数表示调用该方法的对象。我们不必显式地指定它,python解释器可以识别它。与你的情况一样: name.title() 调用该方法的对象 title() 是 name 所以这里是可变的 self 被指定为的值 name 这就是函数调用 name.title() 相当于 title(name) 但前者是调用方法的正确语法,而后者是用于压缩目的。如果你跑 title(name) 这肯定会引起一个错误。但是, title() 方法属于 str 你随时都可以打电话来上课 str.title(name) .希望我没有把你弄糊涂,而是把它说得更清楚了……快乐编码……)
self
title(name)
str
str.title(name)
2条答案
按热度按时间bq3bfh9z1#
并非总是可以动态创建方法:
输出:
方法是类型的示例
MethodType
而且它还有一个绑定到它的对象,当方法被调用时,它的第一个参数总是被该对象填充。在这里fn()
函数的第一个参数(x)将用obj
对象nvbavucw2#
上面的答案很精确,但我想补充一点。
实际上,方法是将对象作为参数的函数,然后根据这些参数返回值。由于python是一种面向对象的语言,因此python中的所有内容都是对象。
当你打电话的时候
name.title()
:然后,python搜索title()
方法name
对象。由于所有方法都指定将对象作为参数:这就是类和
self
这里的参数表示调用该方法的对象。我们不必显式地指定它,python解释器可以识别它。与你的情况一样:
name.title()
调用该方法的对象title()
是name
所以这里是可变的self
被指定为的值name
这就是函数调用name.title()
相当于title(name)
但前者是调用方法的正确语法,而后者是用于压缩目的。如果你跑
title(name)
这肯定会引起一个错误。但是,title()
方法属于str
你随时都可以打电话来上课str.title(name)
.希望我没有把你弄糊涂,而是把它说得更清楚了……快乐编码……)