是否可以重载类型方法的返回值?

时间:2019-07-30 11:56:19

标签: python-3.x types overloading

给出以下示例:

class Container:
    def __init__(self, var):
        self.var = var

class Test:
    def __init__(self):
        self.var = Container("123")

是否可以重载type()之类的方法type(Test().var)会产生string而不是Container吗?


编辑:我使用Container类是为了对Test.var施加限制。

这个想法是Test是一个包含许多变量的类,某些女巫的名字相似。存在Container类以确保使用正确的类型(__eq __(),__str __(),__add __(),...重载以使Container类尽可能谨慎),以便快速诊断问题。尽可能(该代码将由在python中具有多种专业知识的人员使用)

另一种解决方法是使用@property,但是由于存在许多变量,因此代码最终会比其他方法更大,并且维护起来也不那么简单(有将近一百个类将必须实现属性)

我想重载type(Test().var)以便返回type(Test().var.var),以便尽可能地易于使用

1 个答案:

答案 0 :(得分:0)

简短的回答是“不。”

generate_subscript()中,它指出:

  

每个对象都有一个标识,一个类型和一个值... type()函数返回一个对象的类型(它是对象本身)。就像其身份一样,对象的类型也是不可更改的。