Проблема импорта Python - PullRequest
       6

Проблема импорта Python

1 голос
/ 20 июля 2011

Так что, очевидно, я просто не знаю, как правильно импортировать вещи в программе на Python.Я только начинаю с языка, и он сильно отличается от языка, к которому я привык.

В любом случае, главная проблема в том, что что-то не так с тем, как я импортирую пакеты / модули / классыи я не могу понять, что это такое.

Прямо сейчас моя структура файла выглядит следующим образом:

-Main Directory
 main.py
    -Person (Folder)
        __init__.py
        Person.py
        Student.py

Прямо сейчас мой файл main.py выглядит следующим образом: *

from Person import Person
from Person import Student

if __name__ == '__main__':

    p = Person.Person("Jim", 20)
    print(p)
    s = Student("Jim", 20, "math")
    print(s)

, и я продолжаю получать ошибкуTypeError: 'module' object is not callable

Попытался изменить его на s = Student.Student("Jim", 20, "Math"), но когда это происходит, я получаю ошибку TypeError: module.__init__() takes at most 2 arguments (3 given)

Для справки:

Person.py:

class Person():    
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return "My name is {0} and I am {1}".format(self.name, self.age)

Student.py:

from Person import Person
class Student(Person.Person):

    def __init__(self, name, age, sub):
        Person.__init__(self,name,age)
        self.sub = sub

Независимо от того, что я делаю с импортом или что-то, что может измениться, все это продолжает давать мне ошибки.Понятия не имею, что делать в этот момент - может быть, я просто пропустил создание классов и подклассов, когда мне это показали, но я не могу ничего найти, чтобы это исправить.

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

main.py:

from Person import Person
from Person import Student

if __name__ == '__main__':

    p = Person.Person("Jim", 20)
    print(p)
    s = Student.Student("Jim", 20, "math")
    print(s)

student.py

from Person import Person

class Student(Person):

    def __init__(self, name, age, sub):
        super(Student, self).__init__(name,age)
        self.sub = sub

person.py

class Person(object):    
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return "My name is {0} and I am {1}".format(self.name, self.age)
0 голосов
/ 20 июля 2011

Проблема в вашем классе ученика. Здесь Person ссылается на модуль Person.py. Вы должны вызвать родительский объект, выполнив:

super().__init__(name,age)

Также в основной части вы должны инициализировать:

s = Student.Student("Jim", 20, "math")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...