gpt4 book ai didi

python - 如何在 Python 类中使用模块函数

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:17 25 4
gpt4 key购买 nike

<分区>

我在谷歌上搜索了很多,但似乎无法弄清楚如何实际执行此操作:

假设我有一个像这样的通用实用方法:

def __square(n):
return n*n

然后我有一些我可能想在内部使用这个方法的类:

def __square(n):
return n*n

class Foo:
def __init__(self):
self.baz = 2

def bar(self):
return self.baz + __square(self.baz)

嗯,那行不通。我得到 NameError '_Foo__square' is not defined

为什么?

作为解决方法,我最终做了这样的事情:

class Foo:
def __init__(self):
self.baz = 2

def bar(self):
return baz + self.square(self.baz)

def square(self,n):
return n*n

但这对我来说感觉很傻,因为 square 函数与 Foo 实例无关,我也不期望或希望它成为 Foo 实例上的方法。

处理这类事情的“pythonic”方式是什么?

编辑

我至少弄清楚了其中的一部分:我之所以会出现这种行为,是因为我认为这些实用方法是私有(private)的,并且我一直将它们命名为 def __square(n):

我没有意识到这很特别,在输入上面的示例时,我最初并没有那样输入。我现在已经编辑了问题以反射(reflect)它的实际输入方式。

所以现在我的问题是:为什么将 __ 放在顶级方法前面会破坏它,或者看起来会破坏它?我知道这是在 Python 中命名“私有(private)事物”的约定,因为它在这种情况下不起作用,您会推荐什么?

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