M
Mike Howarth
Hi
I was wondering whether anyone could help me, I'm pretty new to python
coming from a PHP background and I'm having a few products in getting my
head round how to write the factory pattern within python.
I'm currently looking to try to return values from a db and load up the
relevant objects, values returned are product type (I,S) and product code
(123).
At the moment I've adapted some code I've found illustrating the factory
method but ideally I would like to use the type to load up the relevant
object.
Another issue I've found is that I don't seem to be able to access to the
price attribute of each of the object. I'm sure these are very
straightforward issues however I seem to have tied myself in knots over this
and could do with a fresh set of 'pythonic' eyes to help me out.
registry = {}
class MetaBase(type):
def __init__(cls, name, bases, dict):
registry[name] = cls
class Product(object):
__metaclass__ = MetaBase
class Item(Product):
def __init__(self, *args, **kw):
self.price = 1
class Set(Product):
def __init__(self, *args, **kw):
self.price = 2
def factory(kind, *args, **kw):
return registry[kind](*args, **kw)
item = registry['Item']
print item.price
I was wondering whether anyone could help me, I'm pretty new to python
coming from a PHP background and I'm having a few products in getting my
head round how to write the factory pattern within python.
I'm currently looking to try to return values from a db and load up the
relevant objects, values returned are product type (I,S) and product code
(123).
At the moment I've adapted some code I've found illustrating the factory
method but ideally I would like to use the type to load up the relevant
object.
Another issue I've found is that I don't seem to be able to access to the
price attribute of each of the object. I'm sure these are very
straightforward issues however I seem to have tied myself in knots over this
and could do with a fresh set of 'pythonic' eyes to help me out.
registry = {}
class MetaBase(type):
def __init__(cls, name, bases, dict):
registry[name] = cls
class Product(object):
__metaclass__ = MetaBase
class Item(Product):
def __init__(self, *args, **kw):
self.price = 1
class Set(Product):
def __init__(self, *args, **kw):
self.price = 2
def factory(kind, *args, **kw):
return registry[kind](*args, **kw)
item = registry['Item']
print item.price