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

参见英文答案 >

How do you call a private module function from inside a class?                                    1个

我用谷歌搜索了一堆,似乎无法弄清楚如何实际做到这一点:

鉴于我有一个通用的实用方法,如下所示:

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’没有定义

为什么?

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

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”方式?

编辑

我想出了至少一部分:我得到了这种行为,因为我认为这些实用程序方法是私有的,我一直在命名它们像def __square(n):.

我没有意识到这是特别的,当键入上面的例子时,我最初没有这样输入.我现在编辑了这个问题,以反映它实际输入的方式.

所以现在我的问题是:为什么将__置于顶级方法之前打破它,或者似乎?我理解这是在Python中命名“私有事物”的惯例,因为它在这种情况下不起作用,你会推荐什么呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值