Вызов методов класса Python из командной строки

поэтому я написал какой-то класс в скрипте Python, например:

#!/usr/bin/python
import sys
import csv
filepath = sys.argv[1]

class test(object):
    def __init__(self, filepath):
        self.filepath = filepath

    def method(self):
        list = []
        with open(self.filepath, "r") as table:
            reader = csv.reader(table, delimiter="\t")
            for line in reader:
                list.append[line]

Если я вызываю этот сценарий из командной строки, как я могу вызвать метод? поэтому обычно я ввожу: $ python test.py test_file Теперь мне просто нужно знать, как получить доступ к функции класса, называемой "методом".


person JadenBlaine    schedule 13.07.2015    source источник
comment
будьте немного яснее   -  person The6thSense    schedule 13.07.2015
comment
возможный дубликат Python: запустить функцию из командной строки   -  person Sam    schedule 13.07.2015


Ответы (2)


Вы должны создать экземпляр класса, а затем вызвать метод:

test_instance = test(filepath)
test_instance.method()

Обратите внимание, что в Python вам не нужно создавать классы только для выполнения кода. Здесь вы можете просто использовать простую функцию:

import sys
import csv

def read_csv(filepath):
    list = []
    with open(self.filepath, "r") as table:
        reader = csv.reader(table, delimiter="\t")
        for line in reader:
            list.append[line]

if __name__ == '__main__':
    read_csv(sys.argv[1])

где я переместил вызов функции на __main__ guard, чтобы вы могли также использовать сценарий как модуль и импортировать функцию read_csv() для использования в другом месте.

person Martijn Pieters    schedule 13.07.2015
comment
Я знаю, что могу использовать эту функцию, не записывая ее внутри класса, но мне было просто любопытно, как это можно сделать :) - person JadenBlaine; 13.07.2015

Откройте интерпретатор Python из командной строки.

$ python

Импортируйте модуль кода Python, создайте экземпляр класса и вызовите метод.

>>> import test
>>> instance = test(test_file)
>>> instance.method()
person Ishu Goyal    schedule 25.01.2017