如何在 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
,它将完全按照您的预期工作。
我有一个非常简单的场景,我想在多个 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
,它将完全按照您的预期工作。