def get_field_descriptor(self, class_name, field_name, descriptor):
key = class_name + field_name + descriptor<EOL>if self.__cache_fields == None:<EOL><INDENT>self.__cache_fields = {}<EOL>for i in self.classes.class_def:<EOL><INDENT>for j in i.get_fields():<EOL><INDENT>self.__cache_fields[j.get_class_name() + j.get_name() +<EOL>j.get_descriptor()] = j<EOL><DEDENT><DEDENT><DEDENT>return self.__cache_fields.get(key)<EOL>
Return the specific field

:param class_name: the class name of the field
:type class_name: string
:param field_name: the name of the field
:type field_name: string
:param descriptor: the descriptor of the field
:type descriptor: string

:rtype: None or a :class:`EncodedField` object