给出以下示例:
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)
,以便尽可能地易于使用
答案 0 :(得分:0)
简短的回答是“不。”
在generate_subscript()
中,它指出:
每个对象都有一个标识,一个类型和一个值... type()函数返回一个对象的类型(它是对象本身)。就像其身份一样,对象的类型也是不可更改的。