如何解决在子类中使用父类的 getter 和 setter
我的父类:
class user_credentials:
def __init__(self):
self.username= ""
# -----------------------------
# Getters & setters for attributes
#------------------------------
@property
def username(self):
return self._username
@username.setter
def username(self,username):
while (username == ''):
username = input('Enter a proper User name,blank is not accepted')
self._username = username
# Manage login requests for user
class login_manager(user_credentials):
def __init__(self):
super().__init__()
self.success_value = None
self.error_message = None
def request_login(self):
super(login_manager,self).username = input("Enter your user name")
lm1 = login_manager()
lm1.request_login()
我收到以下错误回溯:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-a712c3363bb9> in <module>
1 lm1 = login_manager()
----> 2 lm1.request_login()
3 lm1.login_request_success()
4 lm1.print_members()
<ipython-input-8-def865430eaf> in request_login(self)
12 def request_login(self):
---> 14 super(login_manager,self).username = input("Enter your user name")
AttributeError: 'super' object has no attribute 'username'
我一直在对此进行一些研究,但似乎找不到有人试图在子类中使用父类中的 setter 的示例。
我做错了什么?
解决方法
这个修改对我有用。
super
property
机制和 {{1}} getter 和 setter 语法实际上让我感到困惑,所以我无法真正告诉您为什么您的代码不应该工作。但是因为无论如何你都是从父类继承的,所以只要你没有在子类中编写另一个版本,你就应该能够使用它的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。