How would I create an class with a "Person.Address.City" property?
Marc 'BlackJack' Rintsch
bj_666 at gmx.net
Tue Dec 19 02:36:46 EST 2006
In <mailman.1782.1166512611.32031.python-list at python.org>, Jamie J. Begin
wrote:
> Let's say I wanted to create an object that simply outputted something
> like this:
>
>>>> import employees
>>>> person = employee("joe") # Get Joe's employment file
>>>> print employee.Title # What does Joe do?
> Developer
>>>> print person.Address.City # Which city does Joe live in?
> Detroit
>>>> print person.Address.State # Which state?
> Michigan
>
> To do this would I create nested "Address" class within the "employee"
> class? Would it make more sense to just use "print
> person.Address('City')" instead?
That depends on the usage of the addresses. If you need them as objects
with "behavior" i.e. methods then you would write an `Address` class. If
you can live with something more simple than a `dict` as `address`
attribute of `Employee` objects might be enough.
BTW you wouldn't create a nested `Address` *class*, but hold a reference
to an `Address` *object* within the `Employee` *object*.
class Address(object):
def __init__(self, city, state):
self.city = city
self.state = state
class Employee(object):
def __init__(self, name, title, address):
self.name = name
self.title = title
self.address = address
employees = { 'Joe': Employee('Joe',
'Developer',
Address('Detroit', 'Michigan')) }
def employee(name):
return employees[name]
def main():
person = employee('Joe')
print person.title
print person.address.city
print person.address.state
Ciao,
Marc 'BlackJack' Rintsch
More information about the Python-list
mailing list