我想创建一个对特定类的输入的检查,我有下面的示例:
class NmbPair:
def __init__(self, a = None, b = None):
self.a = a
self.b = b
def __eq__(self, other):
if self.a == other.a and self.b == other.b:
return True
return False
class NmbOperation:
def __init__(self, *, NmbPair1, NmbPair2):
if not self.check(NmbPair1, NmbPair2): ## this is the check
return
self.NmbPair1 = NmbPair1
self.NmbPair2 = NmbPair2
self._add_first_nmb()
def check(self, a, b):
if a == b:
return False
def _add_first_nmb(self):
self.sum_a = self.NmbPair1.a + self.NmbPair2.a
所以我想检查输入的NmbPairs是否不同,如果它们是相同的,我不希望创建nmbooperation的实例。在
例如:
^{pr2}$但这就带来了一个错误:
AttributeError: 'NmbOperation' object has no attribute 'sum_a'
我不太清楚我做错了什么
您正在创建一个
NmbOperation
对象,__init__
方法在执行行之前立即返回该对象这是因为}。在
self.check(NmbPair1, NmbPair2)
返回None
,所以not self.check(NmbPair1, NmbPair2)
是{因此,从未设置属性
sum_a
,因为从未调用_add_first_nmb
。在您的
^{pr2}$check
方法等效于:你可能想
相关问题 更多 >
编程相关推荐