code: def protect(self, password=None, read_protect=False, protect_from=0):
          
          args = (password, read_protect, protect_from)
          return super(NTAG21x, self).protect(*args)
docs: Set password protection or permanent lock bits.
  
          If the *password* argument is None, all memory pages will be
          protected by setting the relevant lock bits (note that lock
          bits can not be reset). If valid NDEF management data is
          found, protect() also sets the NDEF write flag to read-only.
  
          All Tags of the NTAG21x family can alternatively be protected
          by password. If a *password* argument is provided, the
          protect() method writes the first 4 byte of the *password*
          string into the Tag's password (PWD) memory bytes and the
          following 2 byte of the *password* string into the password
          acknowledge (PACK) memory bytes. Factory default values are
          used if the *password* argument is an empty string. Lock bits
          are not set for password protection.
  
          The *read_protect* and *protect_from* arguments are only
          evaluated if *password* is not None. If *read_protect* is
          True, the memory protection bit (PROT) is set to require
          password verification also for reading of protected memory
          pages. The value of *protect_from* determines the first
          password protected memory page (one page is 4 byte) with the
          exception that the smallest set value is page 3 even if
          *protect_from* is smaller.