gpt4 book ai didi

python - 在 Python 中,some_string.lower() 和 str.lower(some_string) 有什么区别

转载 作者:太空狗 更新时间:2023-10-29 21:32:38 24 4
gpt4 key购买 nike

我对 Python 中的内置方法感到困惑。例如,什么是 some_string.lower()str.lower(some_string) 它们有何不同?

最佳答案

str是Python中所有字符串的类名。 str.lower 是它的方法之一。

如果您在其中一个实例上调用 lower(例如 'ABC'.lower()),您将调用一个绑定(bind)方法,它自动将调用的对象作为第一个参数发送(通常称为 self)。

如果您在类本身上调用 lower(即您使用 str.lower()),那么您调用了一个未绑定(bind)方法,它不会自动提供 self 参数。因此,您必须自己指定要操作的对象。

如果所有这些看起来都难以理解,那么当您考虑如何在类中定义方法时,就会更容易理解。假设我们创建了自己的非常简单的类,它表示一个点(空间中的 X、Y 坐标)。并且有一个 show() 方法来打印点。

class Point:
"""This is the constructor of Point"""
def __init__(self, x, y):
# Save arguments as field of our class instance (self)
self.x = x
self.y = y

def show(self):
print self.x, self.y

# We now create an instance of Point:
p = Point(1.0, 2.0)

# We now show p by calling a bound method
p.show()

请注意,我们不必指定 self 参数(因此调用 p.show() 时不带参数)。实际上,之前的调用或多或少等同于此:

Point.show(p)

它们并不完全等同,但这是一个更高级的话题。它们不等价的最简单情况之一是,如果您在创建对象后更改 p.show 的值,例如:

p.show = 4

现在,p.show() 甚至无法编译,因为 p.show 不再是一个函数,而是一个整数!但是,Point.show(p) 仍然没有变化,因为我们只修改了类实例 (p) 中的 show 属性,而不是在类本身中(Point)。

关于python - 在 Python 中,some_string.lower() 和 str.lower(some_string) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6083090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com