gpt4 book ai didi

python - 如何在 python 中重定向方法调用?

转载 作者:行者123 更新时间:2023-12-05 09:10:30 25 4
gpt4 key购买 nike

我知道您可以使用 __getattr__() 访问不作为该类的属性存在的属性。但是我想对函数做同样的事情。

我读到 python 将属性和方法视为相同,因此您也对方法使用 __getattr__()。这是真的吗?

class container:
def __init__(self, data):
self.data = data

def __getattr__(self, item):
##Don't know the code to put here vv
result = getattr(self.data, item)


class data:
def printHello(self):
print("hello")

def printString(self, string):
print(string)

def main():
someData = data()
someContainer = container(someData)
someContainer.printString("sup")

main()

目标:我希望能够编写 container.printHello() 并让它调用 container.data.printHello()。我还想要一个能够将参数传递给 printString() 的解决方案。我该怎么做呢?

注意:这是一种简化。实际上,我有大量的方法,在开发程序时不断添加、删除和更改方法名称

最佳答案

您几乎拥有它,您只需要归还您拥有的东西。

class Container:
def __init__(self, data):
self.data = data
def __getattr__(self, attr):
return getattr(self.data, attr)

class Data:
def print_hello(self):
print("hello")

def print_string(self, string):
print(string)


Container(Data()).print_hello()
Container(Data()).print_string('foo')

关于python - 如何在 python 中重定向方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61374328/

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