python - 创建子类项时在类对象字典中添加键 - Python 3+
问题描述
我正在创建一个登录系统来练习我的初学者的 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')
从那里我想到能够使用子类用户名创建用户,有没有一种方法可以让我这样创建用户时:
p1 = Username('Jo', dtb1)
用户 'Jo' 直接添加到字典 dtb1 中,例如:
print(dtb1)
>>> dtb1: {'Jo': []}
这可能不是最好的方法,但使用我所知道的就是我想出的。甚至可能吗?您的帮助将不胜感激!干杯
解决方案
如果您希望 aUserbase
包含多个Username
s。Username
不应该是 的子类Userbase
。
这不是i-sa关系。AUsername
不是 的特殊类型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)
推荐阅读
- android - AndroidX 中的 Canvas clipOutRect 兼容性
- java - equals 是否应该由应用程序的业务逻辑来负担?
- r - 模型有时会编译,有时不会,尽管没有任何变化
- javascript - 无法读取 Node.js 中 castArrayFilters 处未定义的属性“castForQuery”
- firebase - 在同一屏幕上的函数之间传递变量
- python - 意外的 Python for 循环行为?
- go - 像 [0:2] 这样的切片声明
- python - Python 无法导入 pywifi
- php - PHP数组在循环期间增加一个值
- javascript - 每 2 秒随机化一次图像 Javascript