Skip to main content
 首页 » 编程设计

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

2025年05月04日1998°冷暖

我将尽力解释我要完成的任务。我试图从一个类中返回一个新类的实例,而不是返回 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