作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道您可以使用 __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/
我是一名优秀的程序员,十分优秀!