Re: Dynamically naming objects.

2008-06-07 Thread Kalibr
Thanks for all this info.

I'll try all your scripts out.

from what you guys have said, I did the following:

I set up a 'computer class' (I'lm leaving out the mutators)

class computer:

def __init__(self, IP, owner, ph_connections, connections):

assert isIP(IP) == True
self.IP = IP
self.owner = owner

for i in ph_connections:
assert isIP(i) == True
self.ph_connections = ph_connections

for i in connections:
assert isIP(i) == True
self.connections = connections

isIP(IP) is a function that checks if it looks like an IP based on
some rules.

Anyway

I set up a list of users, each with their computer object named after
them, so:
users = ['Kal', 'Noob', 'Fred']

I ran through them with some code based vaguely on what you guys have
said:

for i in users:
i = computer('insert some sort of IP here', i, [], [])

I set up the ph_connections and connections lists as empty for ease of
use.
Does this code seem right? I can't get it to work.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Dynamically naming objects.

2008-06-07 Thread Hans Nowak

Kalibr wrote:

On Jun 7, 1:20 pm, Hans Nowak [EMAIL PROTECTED] wrote:

Kalibr wrote:

I've been developing a small script to fiddle with classes, and came
accross the following problem. Assuming I get some user input asking
for a number, how would I spawn 'n' objects from a class?
i.e. I have a class class 'user' and I don't know how many of them I
want to spawn.
Any ideas?

Sure. This will give you a list of n instances of user:

   [user() for i in range(n)]

Of course, you could also use a good old for loop:

   for i in range(n):
   u = user()
   ...do something with u...

Hope this helps!

--
Hans Nowak (zephyrfalcon at gmail dot com)http://4.flowsnake.org/


whoops, replied to author

What I wanted to ask before was won't 'u' be overwritten with a new
object each time the loop ticks over?


Yes, so you have to store it somewhere, if you want to keep the object around. 
The list comprehension mentioned above stores all the objects in a list, after 
which they can be accessed at will via indexing.



what I want to do is have, say 5 users in a game, so I'd have to spawn
5 objects. I can't do that because I have'nt hardcoded any object
names for them.

or does it somehow work? how would I address them if they all have the
name 'u'?


users = [user() for i in range(n)]

# use: users[0], users[1], etc

--
Hans Nowak (zephyrfalcon at gmail dot com)
http://4.flowsnake.org/
--
http://mail.python.org/mailman/listinfo/python-list


Re: Dynamically naming objects.

2008-06-07 Thread Kalibr
On Jun 8, 2:58 am, Hans Nowak [EMAIL PROTECTED] wrote:
 Kalibr wrote:
  On Jun 7, 1:20 pm, Hans Nowak [EMAIL PROTECTED] wrote:
  Kalibr wrote:
  I've been developing a small script to fiddle with classes, and came
  accross the following problem. Assuming I get some user input asking
  for a number, how would I spawn 'n' objects from a class?
  i.e. I have a class class 'user' and I don't know how many of them I
  want to spawn.
  Any ideas?
  Sure. This will give you a list of n instances of user:

 [user() for i in range(n)]

  Of course, you could also use a good old for loop:

 for i in range(n):
 u = user()
 ...do something with u...

  Hope this helps!

  --
  Hans Nowak (zephyrfalcon at gmail dot com)http://4.flowsnake.org/

  whoops, replied to author

  What I wanted to ask before was won't 'u' be overwritten with a new
  object each time the loop ticks over?

 Yes, so you have to store it somewhere, if you want to keep the object around.
 The list comprehension mentioned above stores all the objects in a list, after
 which they can be accessed at will via indexing.

  what I want to do is have, say 5 users in a game, so I'd have to spawn
  5 objects. I can't do that because I have'nt hardcoded any object
  names for them.

  or does it somehow work? how would I address them if they all have the
  name 'u'?

 users = [user() for i in range(n)]

 # use: users[0], users[1], etc

 --
 Hans Nowak (zephyrfalcon at gmail dot com)http://4.flowsnake.org/

Ok, wait, I see where this is going.
I just did the list comprehension.
I was under some misguided idea that you actually had to have a unique
variable name for all the new objects you spawned. Thanks for all you
help guys!
--
http://mail.python.org/mailman/listinfo/python-list


Dynamically naming objects.

2008-06-06 Thread Kalibr
I've been developing a small script to fiddle with classes, and came
accross the following problem. Assuming I get some user input asking
for a number, how would I spawn 'n' objects from a class?

i.e. I have a class class 'user' and I don't know how many of them I
want to spawn.

Any ideas?
--
http://mail.python.org/mailman/listinfo/python-list


Re: Dynamically naming objects.

2008-06-06 Thread Hans Nowak

Kalibr wrote:

I've been developing a small script to fiddle with classes, and came
accross the following problem. Assuming I get some user input asking
for a number, how would I spawn 'n' objects from a class?

i.e. I have a class class 'user' and I don't know how many of them I
want to spawn.

Any ideas?


Sure. This will give you a list of n instances of user:

  [user() for i in range(n)]

Of course, you could also use a good old for loop:

  for i in range(n):
  u = user()
  ...do something with u...

Hope this helps!

--
Hans Nowak (zephyrfalcon at gmail dot com)
http://4.flowsnake.org/
--
http://mail.python.org/mailman/listinfo/python-list


Re: Dynamically naming objects.

2008-06-06 Thread Paul
Something like this?

class User:
def __init__(self, name):
self.name = name
def __str__(self):
return self.name
n = 10
users = []

for i in range(n):
users.append(User('user%d' % i))

print users[9]
print users[4]

Cheers,

Paul


On Sat, Jun 7, 2008 at 3:59 AM, Kalibr [EMAIL PROTECTED] wrote:

 I've been developing a small script to fiddle with classes, and came
 accross the following problem. Assuming I get some user input asking
 for a number, how would I spawn 'n' objects from a class?

 i.e. I have a class class 'user' and I don't know how many of them I
 want to spawn.

 Any ideas?
 --
 http://mail.python.org/mailman/listinfo/python-list

--
http://mail.python.org/mailman/listinfo/python-list

Re: Dynamically naming objects.

2008-06-06 Thread Kalibr
On Jun 7, 1:20 pm, Hans Nowak [EMAIL PROTECTED] wrote:
 Kalibr wrote:
  I've been developing a small script to fiddle with classes, and came
  accross the following problem. Assuming I get some user input asking
  for a number, how would I spawn 'n' objects from a class?

  i.e. I have a class class 'user' and I don't know how many of them I
  want to spawn.

  Any ideas?

 Sure. This will give you a list of n instances of user:

[user() for i in range(n)]

 Of course, you could also use a good old for loop:

for i in range(n):
u = user()
...do something with u...

 Hope this helps!

 --
 Hans Nowak (zephyrfalcon at gmail dot com)http://4.flowsnake.org/

whoops, replied to author

What I wanted to ask before was won't 'u' be overwritten with a new
object each time the loop ticks over?

what I want to do is have, say 5 users in a game, so I'd have to spawn
5 objects. I can't do that because I have'nt hardcoded any object
names for them.

or does it somehow work? how would I address them if they all have the
name 'u'?
--
http://mail.python.org/mailman/listinfo/python-list


Re: Dynamically naming objects.

2008-06-06 Thread Ben Finney
Kalibr [EMAIL PROTECTED] writes:

 what I want to do is have, say 5 users in a game, so I'd have to
 spawn 5 objects. I can't do that because I have'nt hardcoded any
 object names for them.

Python's built-in mapping type 'dict' is a good fit for this.

Given:

* a 'User' class that is initialised with the user's name

* some way of getting a sequence of names (that you haven't told us
  yet), that I'll bind here to the name 'sequence_of_names'

You can then write::

game_users = {}
for name in sequence_of_names:
game_users[name] = User(name)

This will result in 'game_users' bound to a dict with names mapping to
separate instances of the 'User' type. These instances can each be
addressed by name from the 'game_users' mapping as
'game_users[Fred]', etc.

-- 
 \   Pinky, are you pondering what I'm pondering? Well, I think |
  `\  so, Brain, but do I really need two tongues?  -- _Pinky and |
_o__)   The Brain_ |
Ben Finney
--
http://mail.python.org/mailman/listinfo/python-list


Re: Dynamically naming objects.

2008-06-06 Thread Alan Isaac
On Jun 7, 1:20 pm, Hans Nowak 

  [user() for i in range(n)]



Kalibr wrote:
or does it somehow work? how would I address them if they all have the 
name 'u'? 



users = list(User() for i in range(n))
for user in users:
   user.do_something()

hth,
Alan Isaac

--
http://mail.python.org/mailman/listinfo/python-list


Re: Dynamically naming objects.

2008-06-06 Thread stefaan.himpe

Hello,

You can use this as indicated by Hans:


   u = [user() for i in xrange(5)]


where user is a class or a function returning an object.
u then is a list of user objects.


or does it somehow work? how would I address them if they all have the
name 'u'?


You'd access members of the list as u[0], u[1], ... etc.
I think you'd benefit from reading an introductory programming book.

Best regards,
Stefaan.
--
http://mail.python.org/mailman/listinfo/python-list