Python属性-选择2个属性
我想创建一个包含2个可选属性但至少有1个属性的类。我尝试了以下方法,但attr不允许这样做,并且不能确保至少有一个Python属性-选择2个属性,python,class,attributes,attr,Python,Class,Attributes,Attr,我想创建一个包含2个可选属性但至少有1个属性的类。我尝试了以下方法,但attr不允许这样做,并且不能确保至少有一个 @attr.s 类myClass(): attrA=attr.ib(默认值=None,验证器=optional(int的实例_))) attrB=attr.ib(默认值=None,验证器=optional(int的实例_))) #期望的行为 >>>a=myClass(attrA=1) >>>a.attrA 1. >>>a.attrB 没有一个 >>>a=myClass(属性B=2)
@attr.s
类myClass():
attrA=attr.ib(默认值=None,验证器=optional(int的实例_)))
attrB=attr.ib(默认值=None,验证器=optional(int的实例_)))
#期望的行为
>>>a=myClass(attrA=1)
>>>a.attrA
1.
>>>a.attrB
没有一个
>>>a=myClass(属性B=2)
>>>a.attrA
没有一个
>>>a.attrB
1.
我不完全确定您展示的代码试图做什么,但在任何情况下,都可以通过使用自定义初始化方法而不是attr.s
装饰器来实现您的要求:
class Myclass:
def __init__(self, attrA=None, attrB=None):
if not (attrA or attrB):
raise ValueError('one of the attributes must be provided')
self.attrA = attrA
self.attrB = attrB