Python 我无法确定遗漏的论点

Python 我无法确定遗漏的论点,python,Python,我试图编写一个代码来显示对象User1的特权列表 class User: def __init__(self, f_name, l_name, age): self.f_name = f_name self.l_name = l_name self.age = age def describe(self): print(f"The user {self.f_name} {self.l_name} has {self.age} years old person."

我试图编写一个代码来显示对象User1的特权列表

class User:
def __init__(self, f_name, l_name, age):
    self.f_name = f_name
    self.l_name = l_name
    self.age = age

def describe(self):
    print(f"The user {self.f_name} {self.l_name} has {self.age} years old person.")

def greet(self):
    print(f"Hi {self.f_name}, you are the Administer right now!")

class Privileges:
    def __init__(self, privileges):
        self.privileges = ['add post', 'del post', 'ban users']

    def show_privileges(self):
    print(f"These are the Admin list of privileges: {self.privileges}.")

class Admin(User):
    def __init__(self, f_name, l_name, age):
        super().__init__(f_name, l_name, age)
        self.privileges = Privileges()

user1 = Admin('Porco', 'Rosso', 42)
user1.privileges.show_privileges()
这是输出,但我找不到缺少的参数:

    Traceback (most recent call last):
      File "C:\Users\Administrator\Desktop\python_work\teste34.py", line 25, in <module>
        user1 = Admin('Porco', 'Rosso', 42)
      File "C:\Users\Administrator\Desktop\python_work\teste34.py", line 23, in __init__
        self.privileges = Privileges()
    TypeError: __init__() missing 1 required positional argument: 'privileges'
    [Finished in 0.433s]
    class User:
def __init__(self, f_name, l_name, age):
    self.f_name = f_name
    self.l_name = l_name
    self.age = age

def describe(self):
    print(f"The user {self.f_name} {self.l_name} has {self.age} years old person.")

def greet(self):
    print(f"Hi {self.f_name}, you are now the Admin!")

    class Admin(User):
        def __init__(self, f_name, l_name, age):
    super().__init__(f_name, l_name, age)
    self.privileges = ['add post', 'del post', 'ban users']

def show_privileges(self):
    print(f"These are SysOp list of privileges: {self.privileges}.")

    user1 = Admin('Porco', 'Rosso', 42)
    user1.describe()
    user1.greet()
    user1.show_privileges()
class User:
    def __init__(self, f_name, l_name, age):
        self.f_name = f_name
        self.l_name = l_name
        self.age = age

def describe(self):
    print(f"The user {self.f_name} {self.l_name} has {self.age} years old person.")

def greet(self):
    print(f"Hi {self.f_name}, you are the Administer right now!")

class Privileges:
    def __init__(self, privileges = ['add post', 'del post', 'ban users']):
        self.privileges = privileges

    def show_privileges(self):
        print(f"These are the Admin list of privileges: {self.privileges}.")

class Admin(User):
    def __init__(self, f_name, l_name, age):
        super().__init__(f_name, l_name, age)
        self.privileges = Privileges()

user1 = Admin('Porco', 'Rosso', 42)
user1.privileges.show_privileges()
不传递任何参数

class Privileges:
    def __init__(self, privileges):
要求一个名为privileges的参数。但它从未使用过它,所以您可能只需要删除它,使其:

class Privileges:
    def __init__(self):
如果它应该有一个默认值,那么您需要如下内容:

类别特权: def initself,privileges='add post','del post','ban users': self.privileges=listprivileges

请注意,如果用户通过他们自己的列表,而您不希望您的修改影响他们,或者用户通过他们自己的列表时,您可以复制您所传递的内容,以避免问题和类似问题

不传递任何参数

class Privileges:
    def __init__(self, privileges):
要求一个名为privileges的参数。但它从未使用过它,所以您可能只需要删除它,使其:

class Privileges:
    def __init__(self):
如果它应该有一个默认值,那么您需要如下内容:

类别特权: def initself,privileges='add post','del post','ban users': self.privileges=listprivileges


请注意,如果用户传递他们自己的列表,而您不希望您的修改影响他们,则您可以对传递的内容进行浅层复制,以避免出现问题和类似问题。反之亦然。

根据您的评论,您的意思是隐式传递类权限的uu init_uu中的参数。为此,您需要一个默认参数:

    Traceback (most recent call last):
      File "C:\Users\Administrator\Desktop\python_work\teste34.py", line 25, in <module>
        user1 = Admin('Porco', 'Rosso', 42)
      File "C:\Users\Administrator\Desktop\python_work\teste34.py", line 23, in __init__
        self.privileges = Privileges()
    TypeError: __init__() missing 1 required positional argument: 'privileges'
    [Finished in 0.433s]
    class User:
def __init__(self, f_name, l_name, age):
    self.f_name = f_name
    self.l_name = l_name
    self.age = age

def describe(self):
    print(f"The user {self.f_name} {self.l_name} has {self.age} years old person.")

def greet(self):
    print(f"Hi {self.f_name}, you are now the Admin!")

    class Admin(User):
        def __init__(self, f_name, l_name, age):
    super().__init__(f_name, l_name, age)
    self.privileges = ['add post', 'del post', 'ban users']

def show_privileges(self):
    print(f"These are SysOp list of privileges: {self.privileges}.")

    user1 = Admin('Porco', 'Rosso', 42)
    user1.describe()
    user1.greet()
    user1.show_privileges()
class User:
    def __init__(self, f_name, l_name, age):
        self.f_name = f_name
        self.l_name = l_name
        self.age = age

def describe(self):
    print(f"The user {self.f_name} {self.l_name} has {self.age} years old person.")

def greet(self):
    print(f"Hi {self.f_name}, you are the Administer right now!")

class Privileges:
    def __init__(self, privileges = ['add post', 'del post', 'ban users']):
        self.privileges = privileges

    def show_privileges(self):
        print(f"These are the Admin list of privileges: {self.privileges}.")

class Admin(User):
    def __init__(self, f_name, l_name, age):
        super().__init__(f_name, l_name, age)
        self.privileges = Privileges()

user1 = Admin('Porco', 'Rosso', 42)
user1.privileges.show_privileges()
输出:

These are the Admin list of privileges: ['add post', 'del post', 'ban users'].


但是,强烈反对使用可变类型作为默认参数。

根据您的评论,您的意思是隐式地将参数传递到类Priviliges的uu_uinit_u_u_u中。为此,您需要一个默认参数:

    Traceback (most recent call last):
      File "C:\Users\Administrator\Desktop\python_work\teste34.py", line 25, in <module>
        user1 = Admin('Porco', 'Rosso', 42)
      File "C:\Users\Administrator\Desktop\python_work\teste34.py", line 23, in __init__
        self.privileges = Privileges()
    TypeError: __init__() missing 1 required positional argument: 'privileges'
    [Finished in 0.433s]
    class User:
def __init__(self, f_name, l_name, age):
    self.f_name = f_name
    self.l_name = l_name
    self.age = age

def describe(self):
    print(f"The user {self.f_name} {self.l_name} has {self.age} years old person.")

def greet(self):
    print(f"Hi {self.f_name}, you are now the Admin!")

    class Admin(User):
        def __init__(self, f_name, l_name, age):
    super().__init__(f_name, l_name, age)
    self.privileges = ['add post', 'del post', 'ban users']

def show_privileges(self):
    print(f"These are SysOp list of privileges: {self.privileges}.")

    user1 = Admin('Porco', 'Rosso', 42)
    user1.describe()
    user1.greet()
    user1.show_privileges()
class User:
    def __init__(self, f_name, l_name, age):
        self.f_name = f_name
        self.l_name = l_name
        self.age = age

def describe(self):
    print(f"The user {self.f_name} {self.l_name} has {self.age} years old person.")

def greet(self):
    print(f"Hi {self.f_name}, you are the Administer right now!")

class Privileges:
    def __init__(self, privileges = ['add post', 'del post', 'ban users']):
        self.privileges = privileges

    def show_privileges(self):
        print(f"These are the Admin list of privileges: {self.privileges}.")

class Admin(User):
    def __init__(self, f_name, l_name, age):
        super().__init__(f_name, l_name, age)
        self.privileges = Privileges()

user1 = Admin('Porco', 'Rosso', 42)
user1.privileges.show_privileges()
输出:

These are the Admin list of privileges: ['add post', 'del post', 'ban users'].


但是,强烈反对使用可变类型作为默认参数。

self.privileges=您需要在特权中传递某些内容或从def\uuu init\uu self中删除特权的特权,privileges:错误消息明确指出:uuu init_uuuu缺少1个必需的位置参数:“privileges”-您正在调用privileges类,因此它的uu init_uu方法在类Admin中没有参数。@SayandipDutta谢谢,但我认为list self.privileges=['add post',del post',ban users']将自动传递。这就是编写实例化类作为方法的原因。否?我将写一个答案。@Vinicivs添加,请检查.self.privileges=您需要在特权中传递某些内容或从def\uuu init\uu self中删除特权的特权,privileges:错误消息明确指出:uuu init_uuuu缺少1个必需的位置参数:“privileges”-您正在调用privileges类,因此它的uu init_uu方法在类Admin中没有参数。@SayandipDutta谢谢,但我认为list self.privileges=['add post',del post',ban users']将自动传递。这就是编写实例化类作为方法的原因。否?我会写一个答案。@Vinicivs添加了,请检查。您的默认值是。@ShadowRanger我知道,我应该在答案正文中添加不推荐。您的默认值是。@ShadowRanger我知道,我应该在答案正文中添加不推荐。