在 child class 中使用 parent class 中的 getter 和 setter
Using getters and setters from parent class in child class
我正在尝试在我的 child class 中获取一个方法来设置 parent class 的属性,如下所示:
我的parentclass:
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
在我的childclass中我想在一个方法中设置属性如下:
# 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")
当我调用object执行request_login
方法时:
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'
我一直在对此进行一些研究,但我似乎找不到有人尝试使用 parent class 中 child 中的 setter 的示例] class.
我做错了什么?
这个编辑适合我。
def request_login(self):
self.username = input("Enter your user name")
super
机制和 property
getter 和 setter 语法实际上让我很困惑,所以我不能真正告诉你为什么你的代码 不应该工作。但是,由于无论如何你都是从父 class 继承的,只要你没有在子 class.
中编写另一个版本,你就应该能够使用它的方法
我正在尝试在我的 child class 中获取一个方法来设置 parent class 的属性,如下所示:
我的parentclass:
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
在我的childclass中我想在一个方法中设置属性如下:
# 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")
当我调用object执行request_login
方法时:
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'
我一直在对此进行一些研究,但我似乎找不到有人尝试使用 parent class 中 child 中的 setter 的示例] class.
我做错了什么?
这个编辑适合我。
def request_login(self):
self.username = input("Enter your user name")
super
机制和 property
getter 和 setter 语法实际上让我很困惑,所以我不能真正告诉你为什么你的代码 不应该工作。但是,由于无论如何你都是从父 class 继承的,只要你没有在子 class.