在Python中创建类实例时引发值错误?

在Python中创建类实例时引发值错误?,python,python-3.x,Python,Python 3.x,如果我的类没有正确实例化,是否可以引发值错误 此类需要去掉任何标点符号并返回一个仅由数字组成的字符串: “(212)555-4444”例如应返回“2125554444” 如果作为参数传递的字符串的位数大于或小于10位,测试套件希望我们引发ValueError 我可以知道如何判断数字的数量,但是引发此错误的语法是什么 异常在类中是否需要自己的方法?如果是这样的话,他们不需要被叫去工作吗 我试着到处搜索这个答案(堆栈溢出、文档等),但我似乎无法使用正确的语言/术语来解释它。任何帮助,即使是链接,都将

如果我的类没有正确实例化,是否可以引发值错误

此类需要去掉任何标点符号并返回一个仅由数字组成的字符串:

“(212)555-4444”例如应返回“2125554444”

如果作为参数传递的字符串的位数大于或小于10位,测试套件希望我们引发ValueError

我可以知道如何判断数字的数量,但是引发此错误的语法是什么

异常在类中是否需要自己的方法?如果是这样的话,他们不需要被叫去工作吗

我试着到处搜索这个答案(堆栈溢出、文档等),但我似乎无法使用正确的语言/术语来解释它。任何帮助,即使是链接,都将不胜感激。Thx

class Phone (object):

    #raise error here? 

    def __init__(self, phone_number):
        self.phone_number = phone_number
        #raise error here? 

    @property
    def number(self):
        punctuation = ['\'', '+', '(', ')', '-', 
        '.',',',' ']
        cpn = [item for item in self.phone_number if item not in punctuation]
        return ''.join(cpn)

    @property
    def area_code(self):
        return self.number[:3]

     #def raise_error_here?(self):
     #   pass

我不能确定我是否理解了你的问题。 如果您想获得以下流程:

>>> Phone(12345678910)
ValueError("...")
有一些方法可以实现你所期望的。 像
\uuuuu new\uuuuuuuuuuuuuuuuuuuuuuuuuuu或

\uuuu init\uuuu
中:

class电话(对象):
def u_初始(自我,电话号码):
如果len(电话号码)!=10:
提升值错误(“…”)
self.phone\u number=电话号码
@财产
def编号(自身):
标点符号=['\'''''''+','('',')','-',
'.',',',' ']
cpn=[self.phone_编号中项目对应的项目,如果项目不在标点符号中]
返回“”。加入(cpn)
@财产
def区域_代码(自身):
返回自我编号[:3]

只需
提高值错误()
。但是,在检查条件时应该小心:传递字符串还是计算字符串?我需要在创建类时包含一个字符串。。。。x=电话(“1234567891011”)。。。当创建类时,如果这个字符串不符合某些要求,我想引发ValueError。我知道了,但是什么长度必须正好是10个字符?传递给
\uuuu init\uuu
方法的字符串;还是使用
.number()
方法计算的字符串?我猜是后者,虽然你的问题说是前者。不,是前者,字符串通过了,谢谢