Command-line English Hangman game
Use more functions
Currently, the entirety of your hangman game lies inside the run() call. You can split certain parts of it to their own functions, such as checking for win condition, asking for character input, displaying the current state etc.
Empty prints
Use \n to get a new line in console, instead of putting in empty print statements.
Checking guessed character
For strings, you can just check if the character is in string or not, since you have no need for the count of repetitions itself.
ord, chr and bytearray
They are of no use. You do not need a bytearray of ordinals, simply splitting the word into a list would be enough (not really needed though).
Type hints
With newer python, type hinting feature has also become available. Use them to assist you with the type of values for the variables.

So, your program could also be rewritten like:
class Hangman:
    def __init__(self, target: str, guesses: int):
        assert self.is_ascii_alphabetical(
            target
        ), &quot;Provided secret word is not ascii alphabetical string.&quot;
        self.secret_word = target
        self.guesses = guesses
        self.guessed_word = [&quot;_&quot;] * len(target)
        self._finish = False

    def is_ascii_alphabetical(self, value: str) -&gt; bool:
        return value.isascii() and value.isalpha()

    def display(self, real_word: bool = False):
        if not real_word:
            print(f&quot;\n\n{''.join(self.guessed_word)}\n&quot;)
        else:
            print(f&quot;\n\n{self.secret_word}\n&quot;)

    def read_character(self) -&gt; str:
        while True:
            guess = input(&quot;Guess a letter: &quot;)
            if len(guess) != 1:
                print(&quot;Invalid guess.&quot;)
                continue
            elif not self.is_ascii_alphabetical(guess):
                print(&quot;Non-letter guessed.&quot;)
                continue
            if self.is_guess_repeat(guess):
                print(&quot;Already guessed this letter.&quot;)
                continue
        return guess.lower()

    def update_guessed_word(self, character: str) -&gt; None:
        self.guessed_word = [
            new if new == character else old
            for old, new in zip(self.guessed_word, self.secret_word)
        ]

    def is_guess_repeat(self, guess: str) -&gt; bool:
        return guess in self.guessed_word

    def is_guess_valid(self, guess: str) -&gt; bool:
        if guess not in self.secret_word:
            return False
        return True

    def is_game_over(self) -&gt; bool:
        return self.guesses &lt;= 0

    def is_game_won(self) -&gt; bool:
        return &quot;_&quot; not in self.guessed_word

    def run(self):
        while not self._finish:
            self.display()
            print(f&quot;Remaining guesses: {self.guesses}&quot;)
            guess = self.read_character()
            if self.is_guess_valid(guess):
                self.update_guessed_word(guess)
            else:
                self.guesses -= 1
            if self.is_game_won():
                self.display(True)
                print(&quot;You won.&quot;)
                self._finish = True
            elif self.is_game_over():
                self.display(True)
                print(&quot;You lost.&quot;)
                self._finish = True


if __name__ == &quot;__main__&quot;:
    # Merriam-Webster Word of the Day: October 2, 2020
    hangman = Hangman(&quot;pachyderm&quot;, 6)
    hangman.run()