gpt4 book ai didi

python - python 类中的输入检查函数

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:52 25 4
gpt4 key购买 nike

我想对特定类的输入创建检查,我有以下组成的示例:

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 是否相同,如果相同,我不希望创建 NmbOperation 的实例。

例如:

t1 = NmbPair(2, 3)
t2 = NmbPair(2, 2)
Op1 = NmbOperation(NmbPair1 = t1, NmbPair2 = t2)
print(Op1.sum_a)

但这会引发错误:

AttributeError: 'NmbOperation' object has no attribute 'sum_a'

我不太确定我做错了什么

最佳答案

您正在创建一个 NmbOperation 对象,该对象的 __init__ 方法在执行这些行之前立即返回

self.NmbPair1 = NmbPair1
self.NmbPair2 = NmbPair2
self._add_first_nmb()

这是因为 self.check(NmbPair1, NmbPair2) 返回 None,因此 not self.check(NmbPair1, NmbPair2)

因此,由于从未调用 _add_first_nmb,因此永远不会设置属性 sum_a

您的 check 方法相当于:

def check(self, a, b):
if a == b:
return False
else:
return None

你可能想要

def check(self, a, b):
return not a == b

关于python - python 类中的输入检查函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43465636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com