Object's nesting scope
mwilson at the-wire.com
Fri Aug 28 22:38:55 CEST 2009
> On 28 авг, 16:07, Bruno Desthuilliers <bruno.
> 42.desthuilli... at websiteburo.invalid> wrote:
>> zaur a écrit :
>> > On 26 авг, 17:13, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
>> >> Whom am we to judge? Sure if you propose this, you have some usecases
>> >> in mind - how about you present these
>> > Ok. Here is a use case: object initialization.
>> > For example,
>> > person = Person():
>> > name = "john"
>> > age = 30
>> > address = Address():
>> > street = "Green Street"
>> > no = 12
>> > vs.
>> > person = Person()
>> > person.name = "john"
>> > person.age = 30
>> > address = person.address = Address()
>> > address.street = "Green Street"
>> > address.no = 12
>> Err... Looks like you really should read the FineManual(tm) -
>> specifically, the parts on the __init__ method.
>> class Person(object):
>> def __init__(self, name, age, address):
>> self.name = name
>> self.age = age
>> self.address = address
>> class Address(object):
>> def __init__(self, street, no):
>> self.no = no
>> self.street = street
>> person = Person(
>> address = Address(
>> street="Green Street",
> What are you doing if 1) classes Person and Address imported from
> foreign module 2) __init__ method is not defined as you want?
My work-around would be:
p = person = Person()
p.name = "john"
p.age = age # assuming, for a moment, that the age I wanted to set
# happened to be in another variable
a = p.address = Address()
a.street = "Green Street"
a.no = 12
del a, p # optional, for a tidier namespace
Slightly verbose, but, saying what it means, it avoids having to guess which
age of several ages might have to be used in various places; the same would
go for other input variables. Actually, I probably wouldn't use p as a
stand-in for person unless person were a global name and p could be local.
More information about the Python-list