Получение NameError для переменной класса при доступе к ней в методах другого класса - PullRequest
0 голосов
/ 03 февраля 2020

На самом деле я хотел создать один экземпляр класса 'car' и хотел использовать этот объект в методах другого класса. Поскольку 'carObj' является переменной класса класса 'fourWheeler', мы можем определить ее перед всеми методами и использовать. Это понимание я получил после прохождения нескольких уроков. Но почему здесь я получаю эту ошибку. Я просто хотел понять. Любые предложения / советы мне очень помогут.

class car:
    def __init__(self,name, mileage):
        self.__name = name
        self.__mileage = mileage

    def SpeedDetails(self):
        print("Top Speed : 140")
        print("Avg speed : 80")

class fourWheeler:
    carObj = car('Honda', 20)
    def Vehicletype():
        print(carObj)

    def VehicleSpeed():
        carObj.SpeedDetails()

if __name__ == '__main__':
    vehicle = fourWheeler
    vehicle.Vehicletype()
    vehicle.VehicleSpeed()

Ошибка, которую я получил после запуска скрипта:

ssh://root@kick-bgl-caas6.cisco.com:41114/kick/bin/python -u /tmp/pycharm_project_977/Test.py
Traceback (most recent call last):
  File "/tmp/pycharm_project_977/Test.py", line 20, in <module>
    vehicle.Vehicletype()
  File "/tmp/pycharm_project_977/Test.py", line 13, in Vehicletype
    print(carObj)
**NameError: name 'carObj' is not defined**

1 Ответ

0 голосов
/ 03 февраля 2020

Добавил ваши ошибки в качестве комментариев

class car:
    def __init__(self,name, mileage):
        self.__name = name
        self.__mileage = mileage

    def SpeedDetails(self):
        print("Top Speed : 140")
        print("Avg speed : 80")

class fourWheeler:
    carObj = car('Honda', 20)
    def Vehicletype(self): #missed self here
        print(self.carObj)

    def VehicleSpeed(self): #missed self here
        self.carObj.SpeedDetails()

if __name__ == '__main__':
    vehicle = fourWheeler() # use constructor
    vehicle.Vehicletype()
    vehicle.VehicleSpeed()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...