self.value vs self
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了self.value vs self相关的知识,希望对你有一定的参考价值。
使用内部add和radd类方法时self.value和just self之间的区别是什么。当我在radd中使用self.value时,它向我抛出类型错误,但在add方法中工作正常,那有什么不同
class Numstring:
def __init__(self, value):
self.value = str(value)
def __int__(self):
return int(self.value)
def __add__(self, other):
return int(self) + other
# def __add__(self, other):
# return int(self.vaue) + other**
def __radd__(self, other):
return self + other
# def __radd__(self, other):
# return self.vaue + other
foo = Numstring(5)
# working when using both self.value and self
add = foo + 4
#not working when using self.value in __radd__ (but
#working when using only self what is the difference)
add2 = 4 + foo
print(add)
print(add2)
答案
如果使用self + other
,那么它将在使用self.__add__(other)
的地方调用int(self.value) + other
,这似乎是正确的,因为self.value
的类型为str
。但是,如果在__radd__
中使用self.value + other
,则尝试将str
和int
相加,得到TypeError
。如果您也使用int(self.value) + other
,它将起作用。请注意,如果__radd__
的定义与__add__
相似,则可以忽略它的定义(因为l.h.s.操作数不支持它)。
另一答案
似乎您的示例中有一些拼写错误,例如self.vaue
而不是self.value
self将处理类实例,self.value将处理您定义的类属性。
以上是关于self.value vs self的主要内容,如果未能解决你的问题,请参考以下文章
scikit-learn joblib 错误:多处理池 self.value 超出“i”格式代码的范围,仅适用于大型 numpy 数组