Вопрос Ооп python, режимы доступа

Регистрация
13 Авг 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
Доброго дня. Я вот совсем новичок в программировании, дошёл до темы в ООП - режимы доступа. Есть вот такой код:



class Teams:



def __init__(self, name, best_player):

self.__name=name

self.__best_player=best_player



@classmethod

def __value_check(cls,x):

return type(x)==str



def set_info(self, name, best_player):

if self.__value_check(name) and self.__value_check(best_player):

self.__name = name

self.__best_player = best_player

else:

raise ValueError ("должно быть строкой!")



def get_info(self, name, best_player):

if self.__value_check(name) and self.__value_check(best_player):

print(f"Это команда {self.__name} и её лучший игрок {self.__best_player}!")

raise ValueError ("должно быть строкой!")





Minnesota=Teams("Minnesota", "Kaprizov")

Minnesota.get_info()





ДВА ВОПРОСА: Почему когда я запускаю код, то у меня выходит ошибка "TypeError: Teams.get_info() missing 2 required positional arguments: 'name' and 'best_player' - Я ВЕДЬ УЖЕ ОПРЕДЕЛИЛ ЗНАЧЕНИЯ "name" и 'best_player".Почему когда я запускаю код в такой форме: Minnesota.get_info("Minnesota", "Kaprizov"), то выходит следующее:Это команда Minnesota и её лучший игрок Kaprizov! Traceback (most recent call last): File "C:\Users\lawyer\PycharmProjects\LOTR\NHL_MASS.py", line 27, in <module> Minnesota.get_info("Minnesota", "Kaprizov") File "C:\Users\lawyer\PycharmProjects\LOTR\NHL_MASS.py", line 21, in get_info raise ValueError ("должно быть строкой!") ValueError: должно быть строкой!ПОЧЕМУ НАХОДИТ ОШИБКУ, ЕСЛИ ОБЕ ПЕРЕМЕННЫЕ ЯВЛЯЮТСЯ СТРОКАМИ?
 
Попробуй удалить папку system32, все должно сработать
 
Все синтаксические ошибки
 
Короче смотри


class Teams:

def __init__(self, name, best_player):
self.__name = name
self.__best_player = best_player

@classmethod
def __value_check(cls,x):
return type(x)==str

def set_info(self, name, best_player):
if self.__value_check(name) and self.__value_check(best_player):
self.__name = name
self.__best_player = best_player
else:
raise ValueError ("должно быть строкой!")

def get_info(self):
if self.__value_check(self.__name) and self.__value_check(self.__best_player):
print(f"Это команда {self.__name} и её лучший игрок {self.__best_player}!")
else:
raise ValueError ("должно быть строкой!")


Minnesota=Teams("Minnesota", "Kaprizov")
Minnesota.get_info()
 
def get_info(self, name, best_player)
Метод принимает два аргумента
Minnesota.get_info()
В вызове метода никаких "двух аргументов" нет в помине
Тогда уж просто оставить
def get_info(self):
....
Параметры name и best_player он будет брать из __init__(self, name, best_player)
....
self.__name = name
self.__best_player = best_player
кстати, тоже неправильно..
self.name = name
self.best_player = best_player
 
Назад
Сверху