在 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.

中编写另一个版本,你就应该能够使用它的方法