Недопонимание ООП. Область видимости

Такой вопрос, как в теле функции(метода), класса можно не обращаться к атрибутам класса вот так:

class Rso:
    _username = input()
    def func():
        print(Rso._username)

А вот так:

class Rso:
    _username = input()
    def func():
        print(_username)

По факту мы же в теле класса, и к атрибутам мы можем обращаться как в теле класса)


Ответы (1 шт):

Автор решения: S. Nick

я бы вам предложил попробовать два варианта. Мне лично второй вариант нравится больше.

так:

class Rso(object):
    _username = input('Введите ваше имя: ')
    
    def func(self):
        print(self._username)

rso = Rso()
rso.func()

или так:

class Rso(object):
    def __init__(self, _username):
        super().__init__()
        self._username = _username
    
    def func(self):
        print(self._username)

username = input('Введите ваше имя: ')        
rso = Rso(username)
rso.func()  
→ Ссылка