Когда я объявляю функцию внутри класса, я получаю ошибку имени

#python #python-3.x

Вопрос:

Первый код работает правильно, но когда я объявляю функцию(или метод) «toStr» внутри класса, я получаю ошибку. Что не так с этим кодом? Первый Код:

 class Test:  def __init__(self,hour,minute,second):  self.hour=hour  self.minute=minute  self.second=second  # Return String Time Format def toStr(self):  return str(self.hour) ":" str(self.minute) ":" str(self.second) t=Test(10,20,50) print(toStr(t))  

Второй код с ошибкой имени:

 class Test:  def __init__(self,hour,minute,second):  self.hour=hour  self.minute=minute  self.second=second  # Return String Time Format  def toStr(self):  return str(self.hour) ":" str(self.minute) ":" str(self.second) t=Test(10,20,50) print(toStr(t))  

Комментарии:

1. Вы не можете позвонить print(toStr(t)) , если он принадлежит классу

2. не могли бы вы, пожалуйста, быть более конкретными? Спасибо

Ответ №1:

Вот мой код,

 class Test:  def __init__(self,hour,minute,second):  self.hour=hour  self.minute=minute  self.second=second  # Return String Time Format  def toStr(self):  return str(self.hour) ":" str(self.minute) ":" str(self.second)  t=Test(10,20,50) print(t.toStr())  

вот мой вывод,

 10:20:50  

Вы не можете вызвать toStr функцию вне t объекта (тестового класса), вам нужно вызвать ее с помощью оператора dot, потому toStr что функция Test теперь принадлежит классу.

Комментарии:

1. @mohamadbari если я помог, пожалуйста, отметьте мой ответ как правильный, спасибо!

Ответ №2:

Вам нужно либо вызвать метод для объекта, как:

 print(t.toStr())  

или

 print(Test.toStr(t))  

Ответ №3:

-gt; Как вы работаете с объектно-ориентированными концепциями. вы должны быть знакомы с этим. всякий раз, когда вы создаете класс, вы должны создать его объект, чтобы использовать его функциональность

 class MyTest: #class  def __init__(self, hour, minute, second): #constructor  self.hour=hour  self.minute=minute  self.second=second   def toStr(self): #method  return str(self.hour) ":" str(self.minute) ":" str(self.second)  obj=MyTest(4,5,5) # class object print(obj.toStr()) # to call toStr() method you have to use it with a object.