gpt4 book ai didi

python - 在 exec() python 中调用私有(private)类函数

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:08 25 4
gpt4 key购买 nike

我遇到了一个意想不到的问题。这是简化的代码:

class test():
def __init__(self,name):
self.name = name

def __private(self):
print(self.name)

def public(self):
exec("self.__private()")

obj = test('John')
obj.public()

有谁知道如何在不删除 exec 语句的情况下使该代码工作?

最佳答案

以两个下划线开头且不以两个下划线结尾的属性名称受 name mangling 的约束。 .

当你这样做时

def __private(self):
print(self.name)

在类定义中,您实际上创建了一个名为 _<ClassName>__private 的方法。 .

您仍然可以正常访问它 __private在类主体内(使用适当的限定符,例如 self ,如果适用),但为了通过 exec 调用它或eval ,或在类主体之外,您必须使用其全名:

def public(self):
exec('self._test__private()')

关于python - 在 exec() python 中调用私有(private)类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46284205/

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