I recently was working on a little python project and came to a situation where I wanted to pass self
into the constructor of another object. I'm not sure why, but I had to look up whether this was legal in python. I've done this many times in C++ and Java but I don't remember ever having to do this with python.
Is passing references to self
to new objects something that isn't considered pythonic? I don't think I've seen any python programs explicitly passing self references around. Have I just happen to not have a need for it until now? Or am I fighting python style?
Self is the first argument to be passed in Constructor and Instance Method. Self must be provided as a First parameter to the Instance method and constructor. If you don't provide it, it will cause an error.
The self in keyword in Python is used to all the instances in a class. By using the self keyword, one can easily access all the instances defined within a class, including its methods and attributes. init. __init__ is one of the reserved methods in Python. In object oriented programming, it is known as a constructor.
The self parameter is a reference to the current instance of the class, and is used to access variables that belongs to the class.
The special method __init__ is the Python constructor. With an understanding of object oriented programming and classes, let's now look at how the __init__ method works within a Python program.
Yes it is legal, and yes it is pythonic.
I find myself using this pattern when you have an object and a container object where the contained objects need to know about their parent.
Just pass it like a parameter. Of course, it won't be called self
in the other initializer...
class A:
def __init__(self, num, target):
self.num = num
self.target = target
class B:
def __init__(self, num):
self.a = A(num, self)
a = A(1)
b = B(2)
print b.a.num # prints 2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With