Найти - Пользователи
Полная версия: Добрый вечер, проблема с классами и количеством аргументов
Начало » Python для новичков » Добрый вечер, проблема с классами и количеством аргументов
1
Sef1n
У вас на форуме видел похожую ошибку, но решение не работает(
Код (1):
 class User ():
    def __innit__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name
    def greeting_user(self):
        print(f'Hello, {self.first_name} {self.last_name}')
    def describe_user (self):
        print(f'Fst. name: {self.first_name}, Snd. name: {self.last_name}')
class Admin (User):
    def __init__(self, first_name, last_name):
        super().__init__(self, first_name, last_name)
        self.privileges = ['can ban users', 'can delete users']
    def show_privileges (self):
        for privilegue in self.privileges:
            print(f"Admin's priveleges {privilegue}")
admin_1 = Admin('Ivan', 'Ivanov')
admin_1.show_privileges()
admin_1.greeting_user()
Ошибка (1):
 Traceback (most recent call last):
  File "D:\PProjects\Python_learning\main.py", line 16, in <module>
    admin_1 = Admin('Ivan', 'Ivanov')
  File "D:\PProjects\Python_learning\main.py", line 11, in __init__
    super().__init__(self, first_name, last_name)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: object.__init__() takes exactly one argument (the instance to initialize)

В ошибке пишет, что нужен только один аргумент, но если использовать следующий код, то нужно уже два…

Код (2):
 class User ():
    def __innit__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name
    def greeting_user(self):
        print(f'Hello, {self.first_name} {self.last_name}')
    def describe_user (self):
        print(f'Fst. name: {self.first_name}, Snd. name: {self.last_name}')
class Admin (User):
    def __init__(self, first_name, last_name):
        super().__init__(self, first_name, last_name)
        self.privileges = ['can ban users', 'can delete users']
    def show_privileges (self):
        for privilegue in self.privileges:
            print(f"Admin's priveleges {privilegue}")
admin_1 = Admin()
admin_1.show_privileges()
admin_1.greeting_user()

Ошибка (2):
 Traceback (most recent call last):
  File "D:\PProjects\Python_learning\main.py", line 16, in <module>
    admin_1 = Admin()
TypeError: Admin.__init__() missing 2 required positional arguments: 'first_name' and 'last_name'

P.S. Переделал, не знал просто как оформлять, надеюсь так правильно.
Alex.Pro.
Sef1n
У вас на форуме видел
После редактирования сообщения с использованием квотирования, сообщение стало более читабельным. Спокойной ночи!

З.Ы.: Теперь и с количеством аргументов легче разобраться.
class User ():
def __innit__(self, first_name, last_name):

class Admin (User):
def __init__(self, first_name, last_name):

admin_1 = Admin('Ivan', ‘Ivanov’)
py.user.next
Sef1n
У вас на форуме видел похожую ошибку, но решение не работает(
Код (1):
У тебя опечатка там в имени метода __init__ класса User. На начальном этапе набирай все коды вручную, перепечатывая их точно с книг профессионалов, не используя буфер обмена и копирование. Это поставит тебе навыки набора кода и навыки чтения кода. Благодаря этим навыкам ты будешь правильно писать с первого раза и ты будешь быстро замечать мелкие ошибки в любых кодах.
Sef1n
py.user.next
Спасибо огромное, думал что PyCharm выделит такую ошибку…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB