Python 编码:为什么有些实现是函数,有些是方法

问题描述 投票:0回答:1

例如,当使用“打印”功能时,它的工作原理如下: 打印(字符串) 然而,当使用“lower”方法时,它的工作原理如下: string.lower()

为什么 lower 不是一个像这样工作的正常函数: 下(弦)

有理由将其实现为方法吗? (根据我最近的阅读,方法实际上只是类中的一个函数。)

这是否与 python 字符串不可变有关,因此必须使用方法而不是函数“重新创建”字符串?

我尝试了 lower(string),它显示“NameError:名称‘lower’未定义” 这是有道理的,因为它是一种方法。

python function methods
1个回答
0
投票

人们往往因其简单性而被Python所吸引。不只是你!如果我们可以选择使用具有相同语法的所有函数和方法,包括我在内的许多人会更高兴。但我们也应该考虑创造该语言的人的便利。

虽然这些函数是用C语言创建的,为了便于理解,我用Python编写。

让我们假设您想要创建几种方法来处理字符串。最简单的设计方法是使用 OOPS,即使用类和方法。例如,

class strings:

    def __init__(self, text):
        self.text = text

    def upper():
        txt =  self.text
        for x in txt:
            if ord(x) in range(97, 123):
                idx = txt.find(x)
                x = chr(ord(x)-32)
                txt = txt[:idx] + x + txt[idx+1:]
        return txt

    def lower():
        # some code here

    def capitalize():
        # Some code here

这样,所有与字符串相关的代码就可以被封装到一个类中。(当然是用C编写,而不是Python)

打电话的时候也..

strings('Hello').capitalise()
strings('Hello').upper()
strings('Hello').lower()

那么类名字符串到哪里去了呢?请记住:为了便于理解,我使用了 python 中的示例。 C 语言和其他语言也提供类似的东西。有一些方法可以省略类名并将参数视为字符串。我的回答表明的是:“这样做的原因是为了方便分组和调试,并解释分组和选择最佳算法的简单性”

© www.soinside.com 2019 - 2024. All rights reserved.