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

Sad*_*lly 2 python class

假设我有一个类定义,它接受一些参数并用它创建额外的数据,所有这些都在__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
Run Code Online (Sandbox Code Playgroud)

我只想在generate_bar()创建类的实例时运行该方法一次,因此该方法在实例上可调用是没有意义的.是否有更简洁的方法来确保方法仅可用__init__,或者我只需要假设任何查看我的代码的人都会理解,从来没有一种情况可以在一个实例上调用generate_bar().班级?

Mar*_*ers 5

如果您没有使用任何实例状态,只需将其作为单独的函数:

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)
Run Code Online (Sandbox Code Playgroud)

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

您可以将函数嵌套在其中,__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()
Run Code Online (Sandbox Code Playgroud)

这里generate_bar()甚至不需要参数,它可以访问x,y并z从封闭的范围.