简体   繁体   中英

Making a 2d list of objects (Python 2.7)

I have no experience with object oriented programming. I've program mostly in C so this tends to be a little confusing. Basically I just want to make sure I am doing it correctly. Also, is this a working example of inheritance?

Okay, so I have initialized a 20x20 grid world and set each element to None.

class World:
    def __init__(self):
        self.arr = [[None for x in range(20)] for y in range(20)]

Now I need to place an object into a specified element given the x,y coordinates. This is a method of the World class.

def add_attack_robot(self, team, x, y, direction):
        self.arr[x][y] = AttackRobot() <---- **Is this correct?**

Here is the AttackRobot class:

class AttackRobot(Robot):
    def __init__(self,team,x,y,direction):
        Robot.__init__(self,team,x,y,direction)

Creating the list of lists seems sound. Try it yourself in an interpreter (this about the best advice a new Python programmer can take):

>>> [[None for x in range(20)] for y in range(20)]
[[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None], [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]]

When you try to instantiate your AttackRobot s, you'll see this:

TypeError: __init__() takes exactly 5 arguments (1 given)

Pass in valid values for team , x , y , and direction ( self is implicit) and you should be set!

Eg:

self.arr[x][y] = AttackRobot(team, x, y, direction)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM