Jerry Zhou
Jerry Zhou

Reputation: 43

How can I automate the creation of instances of a class?

So in python 3 I am having trouble creating multiple instances of a class automatically. I am trying to make monopoly and here is the code sample that is giving me problems.

def numplayer():
    numplayer = int(input('How many players would you like? (up to four)'))
    while numplayer > 4 or numplayer < 1:
        numplayer = int(input('How many players would you like? (up to 
        four)'))
    for i in range(numplayer):
        PlayerMoney.append(1500)

What I want to do is also add something that will create the number of players that numplayers equals to in the for i in range(numplayer) function. I have the player as a class but I don't want to manually create every single class for every player. If there is a solution to this, please do tell. Thanks!

EDIT: So I think this might be bad wording in the title but I'm trying to create multiple instances of a single class (the player). Here is the code for the player class:

class Player:

    def __init__(self, name, money, position):
        self.name = name
        self.money = money
        self.position = position

    def DiceRoll(self):
        x = random.randint(1, 6)
        y = random.randint(1, 6)
        sum = x + y
        return [sum, x, y]

    def getName(self):
        return sef.name

    def getMoney(self):
        return self.money

    def getPosition(self):
        return self.position

Upvotes: 0

Views: 649

Answers (2)

IslamTaha
IslamTaha

Reputation: 1564

# Create Class 
class Player:
    def greating(self):
        print 'Hello!'

# List to store instanses
l = []

for i in range(4):
   l.append(Player())

# Call Instance #1 methods
l[0].greating()

Here we have a player class and 4 instances from this class stored in l list.

Upvotes: 1

jpp
jpp

Reputation: 164623

I would advise you structure your code as below. It's usually a good idea for your function to return something.

def setup():

    n = int(input('How many players would you like? (up to 4)'))

    names = [input('Give name #{0}'.format(i)) for i in range(1, n+1)]

    return [Player(name, 1500, 0) for name in names]

players = setup()

Upvotes: 1

Related Questions