def __init__(self, name, full_name, index, number, type, cpp_type, label,<EOL>default_value, message_type, enum_type, containing_type,<EOL>is_extension, extension_scope, options=None,<EOL>has_default_value=True, containing_oneof=None):
super(FieldDescriptor, self).__init__(options, '<STR_LIT>')<EOL>self.name = name<EOL>self.full_name = full_name<EOL>self._camelcase_name = None<EOL>self.index = index<EOL>self.number = number<EOL>self.type = type<EOL>self.cpp_type = cpp_type<EOL>self.label = label<EOL>self.has_default_value = has_default_value<EOL>self.default_value = default_value<EOL>self.containing_type = containing_type<EOL>self.message_type = message_type<EOL>self.enum_type = enum_type<EOL>self.is_extension = is_extension<EOL>self.extension_scope = extension_scope<EOL>self.containing_oneof = containing_oneof<EOL>if api_implementation.Type() == '<STR_LIT>':<EOL><INDENT>if is_extension:<EOL><INDENT>self._cdescriptor = _message.default_pool.FindExtensionByName(full_name)<EOL><DEDENT>else:<EOL><INDENT>self._cdescriptor = _message.default_pool.FindFieldByName(full_name)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self._cdescriptor = None<EOL><DEDENT>
The arguments are as described in the description of FieldDescriptor
        attributes above.

        Note that containing_type may be None, and may be set later if necessary
        (to deal with circular references between message types, for example).
        Likewise for extension_scope.