Python 对象是否可以返回整数但具有自定义类型?
是否可以在Python中执行此操作:Python 对象是否可以返回整数但具有自定义类型?,python,class,object,types,int,Python,Class,Object,Types,Int,是否可以在Python中执行此操作: class Foo(): def __init__(self): self.bar = MyClass() foo = Foo() assert foo.bar == 0 assert type(foo.bar) == MyClass 如果0是字符串,则可以在MyClass中使用_repr。值应为“0”,但类型应为MyClass。但是由于uuu repr uuu只能返回字符串,而foo.bar必须是int uu repr u
class Foo():
def __init__(self):
self.bar = MyClass()
foo = Foo()
assert foo.bar == 0
assert type(foo.bar) == MyClass
如果0是字符串,则可以在MyClass中使用_repr。值应为“0”,但类型应为MyClass。但是由于uuu repr uuu只能返回字符串,而foo.bar必须是int uu repr uu,因此无法工作。那么,有没有可能让MyClass()的值为0(int),但仍然保持其类型为MyClass?您可以使用Python标准库的包来完成所讨论的内容,该库实现了。具体地说,您可以从
numbers.Integral
派生MyClass
,并根据需要重写特殊方法。您可以使用Python标准库的包来完成所讨论的内容,该库实现了。具体地说,您可以从numbers.Integral
派生MyClass
,并根据需要重写特殊方法。如果参数为0,您可以重新定义\uuuuuu eq\uuuu
以返回True
。为什么不将整数存储在MyClass内?因此,您可以只执行类似于assert foo.bar.val==0
和assert type(foo.bar)==MyClass
的操作,我不明白这与有什么关系。。。。无论如何,对象不会返回东西。对象是值。您不能是int
和MyClass
,除非MyClass
源于int
,这听起来像是XY问题,特别是如果您不能为MyClass
@juanpa.arrivillaga提供必要的\uuuuueq\uuuuuu
方法,或者除非您创建了一个新类,该类从int
和MyClass
两个方面进行乘法继承,如果MyClass
被设计为用作.mixin,那么这可能是有意义的。如果参数为0,您可以重新定义\uuuuuu eq\uuuu
以返回True
。为什么不将整数存储在MyClass中呢?因此,您可以只执行类似于assert foo.bar.val==0
和assert type(foo.bar)==MyClass
的操作,我不明白这与有什么关系。。。。无论如何,对象不会返回东西。对象是值。您不能是int
和MyClass
,除非MyClass
源于int
,这听起来像是XY问题,特别是如果您不能为MyClass
@juanpa.arrivillaga提供必要的\uuuu eq\uuuuu
方法,或者除非您创建了一个新的类,该类从int
和MyClass
两个方面进行乘法继承,如果MyClass
被设计为一个混音器,这可能是有意义的。