__init __ () отсутствует 1 обязательный позиционный аргумент (Python3) [duplicate]

На этот вопрос уже есть ответ:

во время моего изучения python у меня есть ошибка в этом коде:

self.privilegis = Privilegis()
TypeError: __init__() missing 1 required positional argument: 'privilegis_type'

описание ошибки

Privileges

Я не могу понять, в чем проблема. Как следует использовать один класс ( класс Привилегии : Защиту __init__ ( самостоятельно , privilegis_type ): самостоятельно . Privilegis_type = [ «Разрешить удалять пользователей» , «Разрешить переименовать пользователей» , «Разрешить запретить пользователям» ] # ... ) как атрибут другого (privilegis_type)?

python,python-3.x,python,

-1

Ответов: 2


1

В своем Privilegisклассе вы пишете:

Admin

Таким образом, вы указываете, что для этого требуется privilegisпараметр, но это странно, так как позже вы ничего не делаете с этим.

Либо вы, вероятно, должны переписать конструктор и обработать параметр (и, таким образом, предоставить его при построении Privilegisобъекта или вы должны избавиться от этого параметра.


1

У вашего __init__()класса есть privilegis_typeатрибут, который инициализирует экземпляр Admin. __init__()Метод определяет , как вы инициализировать класс, и в вашем случае это требует в privilegeкачестве параметра.

Если вам нужен этот класс Admin ( Пользователь ): def __init__ ( self , first_name , last_name , location , payment_method , privilegis_type ): # add privilegis type super (). __init__ ( first_name , last_name , расположение , PAYMENT_METHOD ) самостоятельно . privilegis = Privilegis ( privilegis_type ) # передать этот тип привилегий, необходимый классу класса Privilegis Privilegis : def __init__ ( self , privilegis_type ): self . privilegeis_type = [ 'Разрешить удалять пользователей' , 'Разрешить переименовывать пользователей' , 'Разрешить запретить пользователей' ] def show_privilegis ( self ): print ( 'Special admins privilegis:' + ',' . join ( self . privilegis_type ) ) # исправлено, что также для перехода во время инстанцирования добавьте параметр к его методу и передайте его внутри атрибута. Admin__init__privilege

Privilegis

хотя в вашем коде есть две основные ошибки:

  • privilegis_typeкласс не используется параметр вообще. Вы можете сохранить свой исходный код, и удалить self.privilegis или использовать вменяемый по умолчанию , которая будет зависеть от того, что вы пытаетесь сделать.
  • Privilegisне определяется нигде внутри Privilegis. Я считаю, вы хотите, чтобы это былоself.privilegis_type

это означает иметь что-то вроде этого:

class Privilegis:
        def __init__(self, privilegis_type=None): # could be anything
            self.privilegis_type = ['Allow to delete users', 'Allow to rename users', 'Allow to ban users']
        def show_privilegis(self):
            print('Special admins privilegis are: ' + ', '.join(self.privilegis_type)) # fixed that also
питон, питон-3.x, питон,
Похожие вопросы