Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: self-registering classes, δημιουργία αρχικής class

self-registering classes, δημιουργία αρχικής class 8 Χρόνια 2 Μήνες πριν #3438

  • murex
  • Το Άβαταρ του/της murex
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 1
Καλησπέρα σε όλους,

δεν έχω μεγάλη εμπειρία σε 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'"

Κάποια ιδέα για το πως θα ξεκινήσω;
Τελευταία διόρθωση: 8 Χρόνια 2 Μήνες πριν από murex.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.312 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου