Это мой модуль, в котором хранится информация о моей учетной записи для быстрого доступа в дальнейшем проекте.
#universal.py
def fb_acc():
usr = XXXX
pwd = XXXX
def bank_acc():
accno = XXXX
ssc = XXX
pwd = XXXX
Однако, когда я попытался использовать для помещения этих переменных в локальную переменную, получилось следующее:
>> from universal import fb_acc
>> usr = fb_acc.usr
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
usr = fb_acc.usr
AttributeError: 'function' object has no attribute 'usr'
Может ли кто-нибудь помочь мне указать мои синтаксические ошибки в 2 сценариях?






Переменная usr определяется в функции fb_acc, и это означает, что вы не можете получить к ним доступ извне (за исключением некоторых особых случаев) .
Функции не имеют переменных: они являются частью кода, который принимает некоторые параметры, выполняет какие-то действия и возвращает результат. Каждая переменная, которую вы объявляете в функции, предназначена для использования только из этой функции и для облегчения жизни программиста.
Вместо этого вы должны использовать class, например:
class fb_acc:
def __init__(self):
self.usr = XXXX
self.pwd = XXXX
def __repr__(self):
return 'usr = {}, pwd = {}'.format(self.usr, self.pwd)
foo = fb_acc()
usr = foo.usr
Могу я просто вернуть self.usr (только имя пользователя)?
Да. С foo = fb_acc() вы создаете новый fb_acc под названием foo, а с usr = foo.usr вы получаете его атрибут usr.
Извините, но это повторится снова! >>> import universal as uni >>> foo = uni.facebook () >>> usr = foo.usr Traceback (последний вызов последним): файл "<pyshell # 3>", строка 1, в <module> usr = foo.usr AttributeError: объект facebook не имеет атрибута usr
Используйте классы Python для доступа к его атрибутам. Вы получаете доступ к локальным переменным.