Я создаю систему входа в систему, чтобы немного повеселиться, чтобы попрактиковаться в навыках пинтона для начинающих и искать немного помощи.
Это часть моего кода, на который я застрял:
class Userbase(object):
def __init__ (self, name):
self.name = name
self.userbase = {}
def getUBName(self):
return self.name
def changeUBName(self, newname):
self.name = newname
def resetUB(self):
self.userbase = {}
def __str__(self):
return str(self.name) + ': ' + str(self.userbase)
class Username(Userbase):
def __init__ (self, username, userbase):
Userbase.__init__(self, userbase)
self.username = username
userbase[self.username] = []
Моя цель состояла в том, чтобы иметь базовый класс Userbase, где я могу создать базу данных пользователей просто как таковую:
dtb1 = Userbase('dtb1')
Оттуда я имел в виду, чтобы иметь возможность создать пользователя, использующего имя подкласса, есть ли способ сделать это так, когда пользователь будет создан как таковой:
p1 = Username('Jo', dtb1)
Пользователь "Jo" напрямую добавляется в словарь dtb1, например:
print(dtb1)
>>> dtb1: {'Jo': []}
Это может быть не самый лучший способ сделать это, но, используя то, что я знаю, это то, с чем я столкнулся. Возможно ли это? Ваша помощь будет очень признательна! ура
Если вы хотите, чтобы Userbase
содержала несколько Userbase
Username
. Username
не должно быть подклассом Userbase
.
Это не отношение i-sa. Username
не является особым типом пользовательской Userbase
.
Попробуйте вместо этого что-то вроде этого.
class Username():
def __init__ (self, username, userbase):
self.username = username
userbase.userbase[self.username] = self
Здесь Username
добавляет себя к базе Userbase
переданной в ее конструкторе.
Еще лучший подход заключается в добавлении метода к Userbase
который добавляет Username
.
class Userbase(object):
...
def add_user(self, user):
self.userbase[user.username] = user
Теперь после создания имени Username
он может быть добавлен в пользовательскую Userbase
.
b = Userbase('my_base')
u = Username('bob')
b.add_user(u)