def __and__(self, other):
        """Create a conjunction of this descriptor and another
        descriptor.

        """
        Descriptor.assert_descriptor(other)
        setter1 = self.__class__.__set__
        setter2 = other.__class__.__set__

        def new_set(new_self, instance, value, name=None):
            if name:
                new_self.name = name
            try:
                setter1(self, instance, value, name=new_self.name)
                value = getattr(instance, new_self.name)
                setter2(other, instance, value, name=new_self.name)
                value = getattr(instance, new_self.name)
                super(new_self.__class__, new_self).__set__(
                    instance, value, name)
            except ValueError:
                raise ValueError(new_self.err_msg(instance, value))

        new_field_type = self.field_type + "_AND_" + other.field_type
        new_desc = Descriptor.__create_new(new_field_type, new_set)
        return new_desc
def __and__ ( self , other ) : Descriptor . assert_descriptor ( other ) setter1 = self . __class__ . __set__ setter2 = other . __class__ . __set__ def new_set ( new_self , instance , value , name = None ) : if name : new_self . name = name try : setter1 ( self , instance , value , name = new_self . name ) value = getattr ( instance , new_self . name ) setter2 ( other , instance , value , name = new_self . name ) value = getattr ( instance , new_self . name ) super ( new_self . __class__ , new_self ) . __set__ ( instance , value , name ) except ValueError : raise ValueError ( new_self . err_msg ( instance , value ) ) new_field_type = self . field_type + "_AND_" + other . field_type new_desc = Descriptor . __create_new ( new_field_type , new_set ) return new_desc
Create a conjunction of this descriptor and another
        descriptor.