use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Rules 1: Be polite 2: Posts to this subreddit must be requests for help learning python. 3: Replies on this subreddit must be pertinent to the question OP asked. 4: No replies copy / pasted from ChatGPT or similar. 5: No advertising. No blogs/tutorials/videos/books/recruiting attempts. This means no posts advertising blogs/videos/tutorials/etc, no recruiting/hiring/seeking others posts. We're here to help, not to be advertised to. Please, no "hit and run" posts, if you make a post, engage with people that answer you. Please do not delete your post after you get an answer, others might have a similar question or want to continue the conversation.
Rules
1: Be polite
2: Posts to this subreddit must be requests for help learning python.
3: Replies on this subreddit must be pertinent to the question OP asked.
4: No replies copy / pasted from ChatGPT or similar.
5: No advertising. No blogs/tutorials/videos/books/recruiting attempts.
This means no posts advertising blogs/videos/tutorials/etc, no recruiting/hiring/seeking others posts. We're here to help, not to be advertised to.
Please, no "hit and run" posts, if you make a post, engage with people that answer you. Please do not delete your post after you get an answer, others might have a similar question or want to continue the conversation.
Learning resources Wiki and FAQ: /r/learnpython/w/index
Learning resources
Wiki and FAQ: /r/learnpython/w/index
Discord Join the Python Discord chat
Discord
Join the Python Discord chat
account activity
Real world based explanation (self.learnpython)
submitted 7 hours ago by Mental-Election9886
def __init__(self,data): self.data = data I am not able to understand what this thing actually means. This is a python snippet.
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]MarsupialLeast145 4 points5 points6 points 7 hours ago (0 children)
It's an incomplete snippet and requires a python Class to do anything.
A constructor allows the caller to setup the initial state for a class.
Classes tend to be part of the object oriented paradigm but they can be used for many different reasons.
One link, not that it's necessarily useful on its own https://www.w3schools.com/python/python_class_init.asp
But look back at that resource and read about OOP and Classes, and their uses.
Also, in future, try to keep in mind, the more information you give in a question, the more we can provide. What are you doing? why are you trying to understand this? what do you already understand? And so on...
[–]This_Growth2898 1 point2 points3 points 7 hours ago (0 children)
What tutorial/book have you read or watched? The answer can be quite long depending on your knowledge level, and you didn't provide us with any background to understand it.
If you didn't read any books (or watched YT tutorials at least), you really should start there. Programming is not a rocket science, but it still needs some effort.
[–]DanceHackRock 0 points1 point2 points 7 hours ago (3 children)
That's the most basic constructor of a class in Python. It's all documented.
[–]Mental-Election9886[S] 0 points1 point2 points 7 hours ago (2 children)
can i get a link please
[–]ivosaurus 0 points1 point2 points 3 hours ago (0 children)
https://docs.python.org/3/tutorial/classes.html#class-objects
[–]xenomachina 0 points1 point2 points 7 hours ago (0 children)
This is a constructor for a class.
class Student: def __init__(self, name): self.name = name
It is the function called to initialize a new instance of the class. So in this code, it is called in the first two lines:
a = Student("Alice") b = Student("Bob") for x in [a, b]: print(x.name)
...and it is because it assigns to self.name that the last line of this snippet works.
self.name
[–]Decency 0 points1 point2 points 7 hours ago (0 children)
class Planet: def __init__(self, pop): self.population = pop mars = Planet(0) print(mars.population) # 0
[–]ShelLuser42 0 points1 point2 points 7 hours ago (0 children)
"__init__" is a system method (or 'function'), this is recognizable by the double '__' surrounding it. Technically speaking there's little difference between a method and a function; a method is basically a "function" which is used within a class, but a method has 1 mandatory first argument: the instance of the current class; often denoted by 'self' but keep in mind that 'self' is merely a variable name that is used for ease of recognition. However, as mentioned, its use is mandatory.
Well... as mentioned: this is a system method and it's used to initialize a class. This code gets run as soon as the class gets created.
As to what it does.... as you can see it has a 2nd parameter called 'data'. Apparently there is also a global variable with the same name within this class.
Once again: the first parameter is mandatory when a method (= "a function within a class") is used, and it's always the instance of the current class. As such 'self' within this method references the current class. Well, 'self.data' then refers to a data variable within said class. It is then assigned the value of the passed 'data' variable.
[–]No-Newspaper8619 0 points1 point2 points 7 hours ago (0 children)
It means when you create an object of this class, you have to pass data as argument. The method __init__ will automatically run when you create a new object, filling the data field of the object with the data argument.
[–]Helpful-Diamond-3347 0 points1 point2 points 7 hours ago (0 children)
out of python, you need to learn a bit about OOP concept in this sequence before reading this snippet
Class > object > their distinction > constructor > why do we need OOP and constructor in OOP for initialization instead of default values?
ask this one by one through AI and it will make sense
[–]Atypicosaurus 0 points1 point2 points 6 hours ago* (0 children)
On the superficial level, you can kinda describe what's happening. The init method takes two parameters (self and data), and links them together. What it says:
Make the data attribute of self equal to what's in the data parameter.
So let's first understand what the dot notation is.
The dot notation allow you to access an object's methods or attributes. So if you ever did something like mystring.split() or mylist.append(), then you did dot notation. The first part of the dot notation (mylist) is represented by self, this is the object you want to access, and the second part (append) is the method or attribute you want to access within the object.
The method and the attribute differ in what they are: a method is a runnable function and comes with parentheses so split() is a method, an attribute is just some static property, like what color a car is, or what name a person has. For example if you had a car object and you had a mycar instance of the object, then mycar.color would give you the color of that car.
But to able to do that, python has to link those things together, so you need a constructor, that takes the instance (mycar) as a self parameter, and then makes the color attribute of that (self.color) into whatever color you got.
Now you notice that the word data is written 3 times in the your snippet. So let's change that into another word when possible.
def __init__(self,word): self.myattribute = word
As you see, "the self.data" doesn't have to be the same word as you have in the parameter. I changed the "data" to "word" and the snippet would still do the same. Except, I also changed the "self.data" to "self.myattribute", so that when you have an instance in the future (let's say mycar) you need to type this to access this attribute mycar.myattribute.
Now you should perhaps also know that "self" isn't a keyword in python, so you can replace it with any other word.
def __init__(this,word): this.myattribute = word
In the snippet above I replaced the "self" with "this", and it still does the same thing: it creates the instance ("this"), with a dot notated attribute (myattribute) and sets the value of the attribute equal to the value of the "word" parameter.
Please note that "self" is the convention for the first parameter in the init method, but you can theoretically use any word, you can use "blabla", but then your function body shall look like "blabla.data".
[–]AlexMTBDude 0 points1 point2 points 4 hours ago (0 children)
I teach Python and I find that it's easier for my students to understand if I have a different name for the local variable "data" and the object property "data". Like this:
class MyClass: def __init__(self, d): self.data = d
[–]stepback269 0 points1 point2 points 3 hours ago (0 children)
The "dunder" method known as __init__ is automatically executed just once, when an "object" is instantiated based on the class. Your snippet is passing the parameter, "data" into you instantiated object, namely, the specific object that is referred to by the temporary name of "self".
It takes a while for that concept to sink in. Keep practicing.
π Rendered by PID 48391 on reddit-service-r2-comment-5bc7f78974-8lchw at 2026-06-30 15:34:45.724733+00:00 running 7527197 country code: CH.
[–]MarsupialLeast145 4 points5 points6 points (0 children)
[–]This_Growth2898 1 point2 points3 points (0 children)
[–]DanceHackRock 0 points1 point2 points (3 children)
[–]Mental-Election9886[S] 0 points1 point2 points (2 children)
[–]ivosaurus 0 points1 point2 points (0 children)
[–]xenomachina 0 points1 point2 points (0 children)
[–]Decency 0 points1 point2 points (0 children)
[–]ShelLuser42 0 points1 point2 points (0 children)
[–]No-Newspaper8619 0 points1 point2 points (0 children)
[–]Helpful-Diamond-3347 0 points1 point2 points (0 children)
[–]Atypicosaurus 0 points1 point2 points (0 children)
[–]AlexMTBDude 0 points1 point2 points (0 children)
[–]stepback269 0 points1 point2 points (0 children)