Как вызвать метод класса из другого файла в Python?

Я изучаю Python и имею два файла в одном каталоге.

printer.py

class Printer(object):
    def __init__(self):
        self.message = 'yo'

    def printMessage(self):
        print self.message

if __name__ == "__main__":
    printer = Printer()
    printer.printMessage()

Как мне вызвать метод printMessage(self) из другого файла, example.py в том же каталоге? Я думал, что этот ответ близок, но он показывает, как вызывать метод класса из другого класса в том же файле.


person Thomas    schedule 30.07.2017    source источник
comment
Вы импортировали printed.py?   -  person Carcigenicate    schedule 30.07.2017
comment
Несколько отрицательных голосов по этому вопросу меня немного злят. Я был новичком чуть более 3 лет назад, и выяснение этого вопроса - даже после прочтения ТАКОГО сообщения за ТАКИМ сообщением - было для меня источником большого разочарования. Как использовать систему импорта ОЧЕНЬ сложно понять новичку, который пытается учиться самостоятельно.   -  person Rick supports Monica    schedule 30.07.2017


Ответы (3)


Вы должны импортировать его и называть следующим образом:

import printer as pr

pr.Printer().printMessage()
person Gleland    schedule 30.07.2017
comment
Это неправильно. printMessage не статично. Вам нужно создать экземпляр класса Printer. - person Christian Dean; 30.07.2017
comment
Вы вызываете метод класса без аргумента. Я думаю, вы имели в виду pr.Printer().printMessage() - person Christian K.; 30.07.2017
comment
@КристианК. да, только что исправил. Спасибо - person Gleland; 30.07.2017

Ответ @Gleland правильный, но если вы думали об использовании одного общего экземпляра класса Printer для всего проекта, вам нужно переместить экземпляр Printer из предложения if и импортировать экземпляр, а не класс, т.е. :

class Printer(object):
    def __init__(self):
        self.message = 'yo'

    def printMessage(self):
        print self.message

printer = Printer()

if __name__ == "__main__":
    printer.printMessage()

Теперь в другом файле:

from printer import printer as pr
pr.printMessage()
person Christian K.    schedule 30.07.2017
comment
Нет, вы не можете вызвать несвязанный метод без экземпляра в качестве аргумента. - person Klaus D.; 30.07.2017
comment
Я не вызываю несвязанный метод. Пожалуйста, посмотрите еще раз. Единственная разница с другим ответом @gleland заключается в том, что я импортирую экземпляр, а не класс. - person Christian K.; 30.07.2017
comment
@Клаус Д. не могли бы вы пересмотреть свой комментарий и отменить отрицательный голос? - person Christian K.; 31.07.2017

В файле example.py вы можете написать ниже код

из импорта принтера Принтер

прнт = Принтер()

прнт.принтер()

person Mayur    schedule 19.10.2020