我正在创建一个登录系统,以便练习初学者的python技能并寻求一些帮助。
这是我的代码的一部分我被困住了:
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')
从那里我想到能够使用子类Username创建用户,有没有办法让我在创建用户时这样做:
p1 = Username('Jo', dtb1)
用户' Jo'直接添加到字典dtb1中,例如:
print(dtb1)
>>> dtb1: {'Jo': []}
这可能不是最好的方法,但使用我所知道的这就是我想出的。它甚至可能吗?非常感谢您的帮助! 干杯
答案 0 :(得分:0)
如果您希望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)