Tommo
Tommo

Reputation: 1125

Python: Best way to access variable from within a class instance?

I've got a class named Player and there will be 200-300 instances of this class. There is a function within this class called Move and this function requires knowledge of the map.

I also have a class named Map with 1-2 instances. What is the best way to feed an instance of Map into the Player instances?

I just ask because if i feed it to the instance upon Player init so I can access the instance via self.map - won't that be creating hundreds of copies of the Map instance (one for each instance of Player)?

For all I know this could be the standard way of doing it but I have a nagging feeling that this isn't proper.

Thanks

Upvotes: 0

Views: 162

Answers (2)

Eevee
Eevee

Reputation: 48546

Nothing in Python is ever implicitly copied. Whenever you do x = y, whether that's a function call or a variable/element/attribute assignment, x and y afterwards refer to the same object.

I see two pitfalls with your plan, though:

  • Would the map also know about the players? If so, you'll have a lot of circular references on your hands. Just pass the map to move(), instead.
  • It seems more appropriate to have the map itself, or some other rich "game logic" class, handle the actual movement. (I'm not a game dev, though; my gut instinct is just that a thing on a map shouldn't reach outside of itself and move itself around.)

Upvotes: 1

sverre
sverre

Reputation: 6919

If you pass the Map to the Player at init this just passes a reference, not a copy. You will not create redundant instances of Map this way, and it's the best way to do it.

Upvotes: 1

Related Questions