简体   繁体   中英

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

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.

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.)

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