Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2019, 19:27   #1
raulIQ
 
Регистрация: 11.10.2019
Сообщений: 9
По умолчанию TypeError: __init__() takes 3 positional arguments but 4 were given

почему не получается переопределить метод
код таков:
Код:
class People:
	name = 'imya'
	age = 123
    #конструктор
    #c помощью него я могу не вызывать метод set
	def __init__(self,name,age):
		self.name = name
		self.age = age
		

	def set(self,name,age):
		self.name = name
		self.age = age
#класс который унаследовал методы от класса People
class Student(People):
	les_class = 10
#пытаюсь переопределить метод
	def set(self,name,age,les_class):
		self.name = name
		self.age = age
		self.les_class = les_class

Igor = Student('Игорь',16,10)
#Igor.set('Игорь',16)
print(Igor.name+ '-это имя человека,' +str(Igor.age)+'-это его возраст,'+str(Igor.les_class)+'-это его класс')

Raul = People('Рауль')
#Raul.set('Рауль',15)
print(Raul.name+ '-это имя данного человека ,' +str( Raul.age)+'-это его возраст')

Ivan = People('Иван',19)
#Ivan.set('Иван',19)
print(Ivan.name+ '-это имя данного человека,' +str( Ivan.age)+'-это его возраст')
полный текст ошибки:
Код:
C:\Users\777>python "c:/raul/myprm/clasy/classes.py"
Traceback (most recent call last):
  File "c:/raul/myprm/clasy/classes.py", line 22, in <module>
    Igor = Student('Игорь',16,10)
TypeError: __init__() takes 3 positional arguments but 4 were given

Последний раз редактировалось raulIQ; 13.10.2019 в 19:29. Причина: дополнил
raulIQ вне форума Ответить с цитированием
Старый 13.10.2019, 19:38   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Наверно надо было добавить нужный конструктор во второй класс.

И код странный вообще, скорее всего надо как минимум set убрать. А если вы пытались его переопределить, то вы вообще что-то странное делаете, переопределение с изменением числа параметров не имеет смысла, смотрите про полиморфизм.
Имя les_class непонятное.

И привыкайте следовать принятому в Питоне соглашению по оформлению кода https://www.python.org/dev/peps/pep-0008/
Используйте линтер или IDE (в PyCharm по умолчанию) для слежения за этим.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 13.10.2019 в 19:41.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу разобраться с __init__ qwrtam Python 2 16.04.2017 17:46
Ошибка Uncaught TypeError Alex2213 JavaScript, Ajax 3 23.07.2015 11:19
E2250 There is no overloaded version of 'Get' that can be called with these arguments demon-sheff Работа с сетью в Delphi 6 20.05.2013 09:12
too few arguments to .Как правильно исправить ? lisica198808 Помощь студентам 1 17.03.2013 03:32
vector, find. "binary '==': no operator found which takes a left-hand operand of type ..." TwiX Общие вопросы C/C++ 7 30.08.2011 20:49