Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何测试负数并引发ValueError?_Python - Fatal编程技术网

Python 如何测试负数并引发ValueError?

Python 如何测试负数并引发ValueError?,python,Python,我正在努力解决这个问题。我正在迭代地处理这个问题。此时,我有以下二进制类: class Binary: def __init__(self,value): self.value = str(value) if self.value[:2] == '0b': print('a binary!') self.value= int(self.value, base=2) elif self.valu

我正在努力解决这个问题。我正在迭代地处理这个问题。此时,我有以下二进制类:

class Binary:
    def __init__(self,value):
        self.value = str(value)
        if self.value[:2] == '0b':
            print('a binary!')
            self.value= int(self.value, base=2)
        elif self.value[:2] == '0x':
            print('a hex!')
            self.value= int(self.value, base=16)
        else:
            print(self.value)

    def __int__(self):
        if self.value[:1] == '-':
            return ValueError
        return int(self.value)
我正在使用pytest运行一系列测试,包括:

 def __int__(self):
>       if self.value[:1] == '-':
E       TypeError: 'int' object is not subscriptable

我理解错误,因为我将参数保存为int。在这种情况下,测试负数并引发valueerror异常的好策略是什么?

如果
value
是int,那么
value<0
就是测试值为负值。你应该已经知道了。也许您应该在文档集中查看教程


另一个问题是init方法混淆。它将输入转换为字符串,有时将字符串(返回?)转换为int。当init完成时,self.value应该具有所需类型的允许值。

如果self.value<0
?两个
\uuuuuu init\uuuu
方法?谢谢Terry,我应该已经实现了value<0。在第二点上,我将把所有输入参数转换成一个字符串,因为我可以分割一个字符串来查找类似“0b”的内容。但我计划将值存储为int。您能建议一种更好的方法吗?