python - 如何使子类的每个实例不需要父属性(有点?)
问题描述
class User:
def __init__(self, username):
self.username = username
@classmethod
def get_user(cls):
return cls(input("Username: "))
class Budget(User):
def __init__(self, monthtly_income):
super().__init__(User.get_user())
self.monthly_income = monthtly_income
self.perc_lis = []
self.category_obj_lis = []
self.category_name_lis = []
self.value_lis = []
...
# creates objects and adds them to a list
for i in range(len(self.category_name_lis)):
self.category_obj_lis.append("")
self.category_obj_lis[i] = Category(self.category_name_lis[i], self.monthly_income)
...
class Category(Budget):
def __init__(self, name, monthly_income):
super().__init__(monthly_income)
self.name = name
self.perc = 0
self.amt = 0
self.left = 0
self.max = 0
# defines the percentage for each category
def get_perc(self):
self.perc = float(input(f"{self.name}: "))
当我运行它时,它会在我询问类别后询问用户名 3 次,因为我在循环中创建每个 Category 对象。在代码的开头询问用户名。我需要将类别类作为子类,因为我需要在未发布的代码中使用monthly_income 变量。我不太擅长继承,所以我很容易遗漏一些明显的东西。有没有办法让 Category 的每个实例不询问用户名,而只使用一开始就已经询问过的用户名?如果这有点令人困惑,我深表歉意,但不知道从这里去哪里。
解决方案
推荐阅读
- maven - 提供范围和编译范围带来的传递依赖被计算为编译范围
- javascript - 添加后退按钮或指向图像文件页面的链接
- java - com.jayway.jsonpath.InvalidPathException:路径中不允许有空格
- scala - 如何使用我的平等比较器 GroupBy Spark DataFrame?
- angular - 无法更改当前节点的展开/折叠图标
- c# - C# 类没有打印出来
- c++ - 在 Windows 上使用 CLION 使用 openMP 编译程序
- node.js - npm 对等安装错误是什么意思?
- python - Anaconda tensorflow 包不完整?(只有几千字节的文件大小)
- asp.net-core - 如何在 Kestrel 网络服务器中使用更新的服务证书