Pythonic - 如何使用多个参数和有效的构造函数进行初始化

2024-09-25 00:34:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个Python呆子,我正试图用“Python”的方式来解决我的问题。我有一个类,__init__方法有6个参数。我需要验证每个参数,如果有任何参数验证失败,则抛出/引发异常。在

这条路对吗?在

class DefinitionRunner:
    def __init__(self, canvasSize, flightId, domain, definitionPath, harPath):
        self.canvasSize = canvasSize
        self.flightId   = flightId
        self.domain     = domain
        self.harPath    = harPath
        self.definitionPath = definitionPath

        ... bunch of validation checks...
        ... if fails, raise ValueError ...

Tags: 方法self参数initdomaindef方式class
3条回答

如果希望变量独立于__init__设置,可以使用properties在单独的方法中实现验证。在

但是它们只适用于新样式的类,因此需要将该类定义为class DefinitionRunner(object)

例如

    @property
    def canvasSize(self):
        return self._canvasSize

    @canvasSize.setter
    def canvasSize(self, value):
        # some validation here
        self._canvasSize = value

总的说来,这看起来像你那样做。尽管严格地说,您还是应该在分配之前而不是之后进行验证,尤其是在分配可能是时间或资源密集型的情况下。此外,样式约定要求不要像您一样对齐分配块。在

我会像你那样做。除了验证的东西。我将在setter方法中验证并使用它来设置属性。在

相关问题 更多 >