作为属性的实例(类型错误位置参数)

Instances as attributes (type error positional argument)

我一直在努力克服错误:

我有一个 child class,其中有一个实例作为属性。属性 self.admin_privileges 应该将 Python 带到 Privileges class 然后打印出归因于 self.privileges.

的列表

但是,当我拨打电话时 fortesque.admin_privileges.show_privileges() 我收到类型错误:

missing 1 required positional argument: 'privileges'

这是我的代码的图片:

在您的 class 中,只需将 def __init__(self, privileges): 替换为 def __init__(self):,因为您已经在 __init__ 函数中定义了 privileges 列表。

在您的代码示例中,您有一个看起来像这样的 class 定义:


class Privleges():
    def __init__(self, privleges):
        self.privleges = ['can do something']

class Admin():
    def __init__(self):
        self.privleges = Privleges()

问题是“权限”class 需要用您的初始化函数定义的参数“权限”进行实例化。

对于您的管理员 class 您在实例化新管理员时不需要任何此类参数,如初始化函数所示,它只接受“自我”,没有任何额外的。

要解决此问题,您可能需要从“特权”class 的初始化函数中删除“特权”,因为它是由初始化函数设置的。

class Privileges():
    def __init__(self):
        self.privileges = ['can do something']

然而,另一种选择是创建一个默认的权限列表,同时还允许管理员 class 能够覆盖该值。看起来像这样。

class Privileges():
    def __init__(self, privileges=['can do the default action']):
        self.privileges = privileges

class Admin():
    def __init__(self):
        self.privileges = Privileges(['can do Admin Stuff'])

class NotAnAdmin():
    def __init__(self):
        self.privileges = Privileges() # gets the default