修饰符和参数在python类中检查

2024-03-28 11:52:50 发布

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

A类:

class Spam:
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

实例化:

from Spam import *
c = Spam(1,5,4)

在这种情况下,要对“a”或“b”或“c”的输入值执行检查,我有decorators@property,@a.setter,@b.setter,@c.setter,但是…如果我需要检查这些变量,但它们没有直接复制到“private”类变量中呢?你知道吗

我是说

class Egg()
    def __init__(self, a, b, c):
        self.var = (a + b)*c

假设我需要检查a<;c和c>;b,如果检查不一致,对类Egg中的变量“a”、“b”、“c”执行检查并将其值绑定到某些标准的最佳方法是什么?有什么特别的装饰师吗?(我需要在类外保持代码“干净且易于理解”…这就是为什么我在实例化之前不执行检查)。你知道吗


Tags: 实例fromimportselfdecoratorsiniteggvar
1条回答
网友
1楼 · 发布于 2024-03-28 11:52:50

你考虑过不变性吗?你知道吗

from collections import namedtuple

class Egg(namedtuple('Egg', 'a b c'))
    def __new__(cls, a, b, c):
        assert a < c and c > b
        return super(Egg, cls).__new__(a, b, c)

    @property
    def var(self):
        return (a + b)*c

相关问题 更多 >