创建类的实例时如何限制可能的输入。例如只创建一个类的整数实例

时间:2020-10-29 23:36:52

标签: python oop arguments instance

在Python OOP中,创建对象时可以限制输入。

例如如果我只想将int对象用于一个类。因此,如果输入了字符串,则会返回错误。

我最初的想法是在init方法中编写一条if语句,如果不满足条件,该错误语句将返回错误消息。

上面的唯一问题是,似乎在init方法中返回一条语句远非理想。

任何指导将不胜感激

2 个答案:

答案 0 :(得分:0)

您可以在方法标题中使用类型建议。与强制相比,这被认为是更好的做法。

def __init__(name: str) -> str:
    return "Hello, " + name

如果确实需要强制,则可以添加isinstance(变量,类型),像这样。

if not isinstance(name, str):
    raise TypeError

答案 1 :(得分:-1)

实现此方法的基本方法是在__init__方法中添加检查,如果将错误的类型传递给该检查,则会引发错误(通常为TypeError)。您还希望使用function annotations向您的读者提示有关参数的预期类型。不过实际上,通常最好尝试将__init__方法中传递的任何内容转换为您期望的类型。 Python非常灵活,利用这种灵活性为您带来优势对设计和构建应用程序以及任何可能希望利用代码的人都是有益的。

一个例子:

class Test:
    def __init__(self, param: int):
        self.my_param = int(param)

在上面的示例中,如果要将param包装为一个异常,如果未处理该异常,则整个应用程序将崩溃。如果添加int()转换,它将尝试将传递的任何内容转换为int,从而只要传递的项目可以转换,就可以避免崩溃。在某些情况下,您绝对想指定要传递的确切类型,但是 flexibility 通常更为重要。

相关问题