[英]decorators and parameters check inside a python class
一类:
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'我有装饰器@ property,@ a.setter,@ b.setter,@ c.setter但...如果我需要检查此变量但它们没有直接复制到“私有”类变量中怎么办?
我的意思是
class Egg()
def __init__(self, a, b, c):
self.var = (a + b)*c
假设我需要检查a <c和c> b,对Egg类中的变量'a','b','c'执行检查并将其值绑定到某些标准的最佳方法是什么? ? 有没有特别的装饰? (我需要在类外保持代码“干净且易于理解”……这就是为什么我在实例化之前不执行检查)。
您是否考虑过不变性?
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.