如何在 python 3 中的 class 中使用在 class 之前声明的函数?

How can I use a function declared before a class, inside that class in in python 3?

我有一个非常简单的场景,我想在多个 classes 中使用一个函数。所以我在 class 之前声明它,然后我尝试使用。

def __ext_function(x):
    print(f'Test{x}')
    
class MyClass():
    some_value: int

    def __init__(self, some_value):
        self.some_value = some_value
        __ext_function(1)

a = MyClass(some_value=1)

但是由于某种原因它一直告诉我它没有退出:

NameError: name '_MyClass__ext_function' is not defined

我看到其他问题的解决方案如下:

def __ext_function(x):
    print(f'Test {x}')
    
class MyClass():
    some_value: int
    ext_func = staticmethod(__ext_function)
    def __init__(self, some_value):
        self.some_value = some_value
        self.ext_func(1)

a = MyClass(some_value=1)

但是 none 似乎有效。

这是 Python 通常的纯语法失败的情况。以两个下划线开头的符号在 class 中得到特殊处理。如果将该函数名称更改为 _ext_function,它将完全按照您的预期工作。