Python属性-选择2个属性

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)

我想创建一个包含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)
>>>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