gpt4 book ai didi

Python从类而不是自身返回不同类的实例

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:33 24 4
gpt4 key购买 nike

我将尽力解释我要完成的任务。我试图从一个类中返回一个新类的实例,而不是返回 self。请引用示例代码中的注释。

class Test(object):
def __init__(self, a):
self.a = a

def methoda(self):
return len(self.a)


class SomeClass(object):
def __init__(self, lol):
self.lol = lol
self.test = Test(self.lol)

def __call__(self):
return self.test # this isnt going to work


c = SomeClass('bar')
print(c) # trying to access the Test class attributes and methods here
# so in the above example, i want to do
# print(c.a) # print bar
# print(c.length() # print 3

__repr____str__ 在这种情况下不起作用,因为我试图取回 Test 类对象。我在 SomeClass 中尝试过的其他事情有类似 self.test = Test(self.lol) 的东西,但这似乎并没有完全满足我的要求。

我该怎么做?

最佳答案

您可以重写SomeClass__getattr__ 方法,以便可以将SomeClass 对象中未定义的属性委托(delegate)给self。测试:

class Test(object):
def __init__(self, a):
self.a = a

def methoda(self):
return len(self.a)

class SomeClass(object):
def __init__(self, lol):
self.lol = lol
self.test = Test(self.lol)

def __getattr__(self, item):
return getattr(self.test, item)

c = SomeClass('bar')
print(c.methoda())

这个输出:

3

关于Python从类而不是自身返回不同类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58631859/

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