Python 如何从超类调用构造函数
如何使用超类中的属性调用构造函数 例:Python 如何从超类调用构造函数,python,oop,Python,Oop,如何使用超类中的属性调用构造函数 例: 首先,@MartijnPieters已经指出了一个小的逻辑错误:super的第一个参数应该是当前类: id_code = "test_code" name = "test_name" surname = "test_surname" username = "test_username" password = "test_pass" 为了将它们传递给超类,您需要在子类中接受这些参数。通过硬编码: super(Worker, self).__init__()
首先,@MartijnPieters已经指出了一个小的逻辑错误:
super
的第一个参数应该是当前类:
id_code = "test_code"
name = "test_name"
surname = "test_surname"
username = "test_username"
password = "test_pass"
为了将它们传递给超类,您需要在子类中接受这些参数。通过硬编码:
super(Worker, self).__init__()
或者使用*args
和**kwargs
(参见示例:)。但这绝非小事,因为您需要知道哪个类需要哪些参数,顺序应该如何,以及哪些参数是仅位置参数或仅关键字参数,或者您是否希望将它们全部作为位置参数或关键字参数。还可以隐藏参数(-names)
我将坚持硬编码的论点,并且只有当这一点从长远来看是复杂的,考虑切换到“代码> *ARG”,** kWARGS 。
您需要在super(Worker, self).__init__()
class User(object):
def __init__(self, id_code, name, surname):
self.id_code = id_code
self.name = name
self.surname = surname
class Worker(User):
def __init__(self, id_code, name, surname, username, password, worker_type): # changed
super(Worker, self).__init__(id_code, name, surname) # changed
self.username = username
self.password = password
self.worker_type = worker_type