Python Forum
[PyGame] Beginning PyGame question about "self"
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyGame] Beginning PyGame question about "self"
#1
Hello I am not sure how to really question my question if that makes sense. I am following metulburr's pygame tutorial and something I don't really understand is why when I make a class I have self. I have my example below but if someone could explain what self.*** actually does or clarify it simply that would help, also I see under the player class "def __init__" a lot why is __init__ commonly used?

class player:
    def __init__(self, screen_rect):
        self.image = pg.image.load('spaceship.png').contert()
        self.image.set_colorkey((255,0,255))
        self.rect = self.image.get_rect(center = screen_rect.center)

    def draw(self, surf):
        surf.blit(self.image, self.rect)
Reply
#2
self refers to the object. Without self they are local variables that disappear when method is returned.

__init__ is just a constructor. Player() = Player.__init__() .
99 percent of computer problems exists between chair and keyboard.
Reply
#3
self is required in instance methods which pertain to editing the object. Without self as the first argument, its just a class method, which does not pertain to the object.

When you assign something to self.var such as
self.image = pg.image.load('spaceship.png').contert()
self.image is a class attribute. Each object is going to have a separate copy. Which doesnt matter here as there is only one player. But you can use self.image in any class method in that class without passing argumetns back and forth....or using global keywords, etc. You can also call that attribute by the object via player.image

the dunder init method (or constructor) is the method that gets executed automatically when the object is created.
So doing
player = Player(my_args)
runs the dunder init method.
Recommended Tutorials:
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  question about my pygame code for space shooter Than999 4 2,436 Feb-07-2022, 03:55 AM
Last Post: metulburr
  question about my Pygame code Than999 2 1,629 Feb-06-2022, 10:03 PM
Last Post: Than999

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020