gpt4 book ai didi

python - 如何定义我只想在 __init__ 方法中使用的 Python 方法,即不能从类定义外部访问的方法?

转载 作者:行者123 更新时间:2023-11-28 21:13:41 27 4
gpt4 key购买 nike

假设我有一个类定义,它接受一些参数并用它创建额外的数据,所有这些都在 __init__ 方法中:

class Foo():

def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
self.bar = generate_bar(x, y, z)

def generate_bar(self, x, y, z):
return x+y+z

我只想在创建类的实例时运行一次 generate_bar() 方法,因此在实例上调用该方法是没有意义的。有没有一种更流畅的方法来确保方法只对 __init__ 可用,或者我是否只需要假设任何看过我的代码的人都会明白,从来没有一种情况适合在类的实例上调用 generate_bar()?

最佳答案

如果您不使用任何实例状态,只需将其设为一个单独的函数即可:

def _generate_bar(x, y, z):
return x + y + z

class Foo():
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
self.bar = _generate_bar(x, y, z)

按照惯例,前导下划线表示它是一个内部函数,不能被模块的外部使用者使用。

可以将函数嵌套在 __init__ 中,但这对可读性没有真正帮助:

class Foo():
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z

def generate_bar():
return x + y + z

self.bar = generate_bar()

这里 generate_bar() 甚至不需要参数,它可以访问 xyz来自封闭范围。

关于python - 如何定义我只想在 __init__ 方法中使用的 Python 方法,即不能从类定义外部访问的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32593749/

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