Καλησπέρα σε όλους,
δεν έχω μεγάλη εμπειρία σε OOP, χρησιμοποιώ python μονο για scripting.
Έχω τα εξής αρχεία:
accessor.py
#!/usr/bin/env python3
import logging
from factory import Factory
class DataAccesor(Factory):
''' A base class for all data accessors factories '''
def __init__(self):
logging.info('created %s', self.__class__)
class SimpleTimeSeries(DataAccesor):
def test(self):
logging.info('this is test in the SimpleTimeSeries ACCESSOR instance: %x', id(self))
class ComplexTimeSeries(DataAccesor):
def test(self):
logging.info('this is test in the ComplexTimeSeries ACCESSOR instance: %x', id(self))
2ο αρχείο transformer.py
#!/usr/bin/env python3
import logging
from factory import Factory
class DataTransformer(Factory):
''' A base class for all data transformer factories '''
def __init__(self):
logging.info('created %s', self.__class__)
class SimpleTimeSeries(DataTransformer):
def test(self):
logging.info('this is test in the SimpleTimeSeries TRANSFORMER instance %x', id(self))
class ComplexTimeSeries(DataTransformer):
def test(self):
logging.info('this is test in the ComplexTimeSeries TRANSFORMER instance: %x', id(self))
3ο αρχείο test.py
#!/usr/bin/env python3
import sys
import logging
from getopt import getopt
from accessor import DataAccesor
from transformer import DataTransformer
from core.factory import FactoryError
def test():
for factory in DataAccesor, DataTransformer:
for kind in 'simpletimeseries', 'complextimeseries', 'doesntexist':
try:
instance = factory.create(kind)
logging.info('instance for factory:%s kind:%s => %s', factory, kind, instance)
instance.test()
except FactoryError as exception:
logging.error('%s', exception)
def main(arguments):
level = logging.DEBUG
options, arguments = getopt(arguments, 'l:')
for option, argument in options:
if option == '-l':
level = getattr(logging, argument.upper())
logging.basicConfig(level=level, format='%(asctime)s:%(levelname)s: %(message)s')
test()
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
Τα παραπάνω αρχεία δεν μπορώ να τα πειράξω. Καλούμαι να φτιάξω ένα αρχείο factory.py όπου θα υπάρχει ο ορισμός του class factory για να μπορώ να τρέξω το test.py και να δίνει το παρακάτω log:
vas@lenovo:/apps/test$ ./test.py
2015-12-04 06:28:19,073:INFO: created <class 'accessor.SimpleTimeSeries'>
2015-12-04 06:28:19,073:INFO: instance for factory:<class 'accessor.DataAccesor'> kind:simpletimeseries => accessor.SimpleTimeSeries
2015-12-04 06:28:19,073:INFO: this is test in the SimpleTimeSeries ACCESSOR instance: 1067c35f8
2015-12-04 06:28:19,074:INFO: created <class 'accessor.ComplexTimeSeries'>
2015-12-04 06:28:19,074:INFO: instance for factory:<class 'accessor.DataAccesor'> kind:complextimeseries => accessor.ComplexTimeSeries
2015-12-04 06:28:19,074:INFO: this is test in the ComplexTimeSeries ACCESSOR instance: 10643e5f8
2015-12-04 06:28:19,074:ERROR: "no 'DataAccesor' factory for 'doesntexist'"
2015-12-04 06:28:19,074:INFO: created <class 'transformer.SimpleTimeSeries'>
2015-12-04 06:28:19,074:INFO: instance for factory:<class 'transformer.DataTransformer'> kind:simpletimeseries => transformer.SimpleTimeSeries
2015-12-04 06:28:19,074:INFO: this is test in the SimpleTimeSeries TRANSFORMER instance 106465c88
2015-12-04 06:28:19,074:INFO: created <class 'transformer.ComplexTimeSeries'>
2015-12-04 06:28:19,074:INFO: instance for factory:<class 'transformer.DataTransformer'> kind:complextimeseries => transformer.ComplexTimeSeries
2015-12-04 06:28:19,075:INFO: this is test in the ComplexTimeSeries TRANSFORMER instance: 10643e5f8
2015-12-04 06:28:19,075:ERROR: "no 'DataTransformer' factory for 'doesntexist'"
Κάποια ιδέα για το πως θα ξεκινήσω;