Ravikumar Mk Ответов: 2

Пожалуйста, помогите мне решить эту проблему внутреннего класса в Python


class student :
  def __init__(self,name,rno) :
    self.name=name
    self.rno=rno
    self.Lap=self.Laptop 
  def show(self) :
    print(self.name,self.rno)
    self.Lap.show()
  class Laptop:      #inner class
    def __init__(self) :
      self.brand="hp"
      self.cpu="i5"
      self.ram=8
    def show(self):
      print(self.brand,self.cpu,self.ram) 
s1=student("ravi",2)
s2=student("kumar",3)
s1.show()

Я получаю ошибку пожалуйста помогите мне

Что я уже пробовал:

Я пытался, но получаю ошибку

ravi 2


Warning\Error

Traceback (most recent call last):
  File "file.py", line 18, in <module>
    s1.show()
  File "file.py", line 8, in show
    self.Lap.show() #inner print
TypeError: show() missing 1 required positional argument: 'self'

2 Ответов

Рейтинг:
0

Richard MacCutchan

Вы забыли скобки в своем вызове для создания экземпляра класса Laptop- Так и должно быть:

class student :
  def __init__(self,name,rno) :
    self.name=name
    self.rno=rno
    self.Lap=self.Laptop() # <- note trailing parentheses


Рейтинг:
0

OriginalGriff

Тебе не нужно сдавать экзамен self к функции: она присутствует во всех классах автоматически - это текущий экземпляр класса, который содержит функцию.

Подумайте об этом как о машинах: у всех автомобилей есть бардачок, поэтому вы можете написать функцию для добавления или удаления элемента из него - но вам не нужно передавать автомобиль в функцию, потому что бардачок уже "прикреплен" к определенному автомобилю! Вы говорите: "положите мой мобильный телефон в бардачок моей машины", и "моя машина" - это пример: он уже знает, о каком бардачке вы говорите, потому что он автоматически получает автомобиль массированным, как self

Просто уберите его self из определения функции.


Richard MacCutchan

Ключевое слово self требуется, и является эквивалентом this в C++/C# и т. д. Как ни странно, вы можете использовать любое слово для представления этого параметра, и действительно, разные слова в одном определении класса. Вы должны смеяться.