Это уровни доступа. Изначально все атрибуты в питоне имеют доступ public

public

Изначально все атрибуты в питоне имеют доступ public. Мы можем обращаться к ним вне класса. Но это небезопасно, потому что могут утекать данные клиентов.

protected

Использование одного нижнего подчеркивания _ делает атрибуты с уровнем доступа protected. С точки зрения питона это ничем не отличается от privat, но на уровне соглашения между разработчиками, такие атрибуты лучше не вызывать вне класса

private

Это 2 нижних подчеркивания, в этом случае сам python выдаст ошибку если мы будем обращаться вне класса к ним.

class BankAccount:
    def __init__(self, name, balance, passport):
        self.name = name
        self._balance = balance
        self.__passport = passport

alex = BankAccount("alex", 132321, 2312312)

print(alex.name) # alex
print(alex._balance) # 132321
print(alex.__passport) # Traceback

# Traceback (most recent call last):
#  File "/Users/admin/Dev/ыщиуы/main.py", line 13, in <module>
#    print(alex.__passport)
# AttributeError: 'BankAccount' object has no attribute '__passport'