I've been sitting over this the whole day and Im a little tired already so please excuse me being brief.
Im new to python.
I just rewrote a working program, into a bunch of functions in a class and everything messed up. I dont know if it's me but I'm very surprised I couldn't find a beginner's tutorial on how to handle classes on the web so I have a few questions.
First of all, in the __init__
section of the class I have declared a bunch of variables with self.variable=something
.
Is it correct that I should be able to access/modify these variables in every function of the class by using self.variable
in that function? In other words, by declaring self.variable
I have made these variables, global variables in the scope of the class right?
If not, how do I handle self?
Secondly, how do I correctly pass arguments to the class? Some example code would be cool.
Thirdly, how do I call a function of the class outside of the class scope? Some example code would be cool.
Fouthly, how do I create an Instance of the class INITIALCLASS
in another class OTHERCLASS
, passing variables from OTHERCLASS
to INITIALCLASS
? Some example code would be cool.
I Want to call a function from OTHERCLASS
with arguments from INITIALCLASS
. What I've done so far is.
class OTHERCLASS():
def __init__(self,variable1,variable2,variable3):
self.variable1=variable1
self.variable2=variable2
self.variable3=variable3
def someotherfunction(self):
something=somecode(using self.variable3)
self.variable2.append(something)
print self.variable2
def somemorefunctions(self):
self.variable2.append(variable1)
class INITIALCLASS():
def __init__(self):
self.variable1=value1
self.variable2=[]
self.variable3=''
self.DoIt=OTHERCLASS(variable1,variable2,variable3)
def somefunction(self):
variable3=Somecode
#tried this
self.DoIt.someotherfunctions()
#and this
DoIt.someotherfunctions()
I clearly didn't understand how to pass variables to classes or how to handle self
, when to use it and when not. I probably also didn't understand how to properly create an instance of a class. In general I didn't understand the mechanics of classes so please help me and explain it to me like I have no idea (which I don't, it seems). Or point me to a thorough video, or readable tutorial.
All I find on the web is super simple examples, that didn't help me much. Or just very short definitions of classes and class methods instances etc.
I can send you my original code if you guys want, but its quite long.
The whole point of a class is that you create an instance, and that instance encapsulates a set of data. So it's wrong to say that your variables are global within the scope of the class: say rather that an instance holds attributes, and that instance can refer to its own attributes in any of its code (via
self.whatever
). Similarly, any other code given an instance can use that instance to access the instance's attributes - ieinstance.whatever
.So here is a simple example of how to use classes: Suppose you are a finance institute. You want your customer's accounts to be managed by a computer. So you need to model those accounts. That is where classes come in. Working with classes is called object oriented programming. With classes you model real world objects in your computer. So, what do we need to model a simple bank account? We need a variable that saves the balance and one that saves the customers name. Additionally, some methods to in- and decrease the balance. That could look like:
Now you have an abstract model of a simple account and its mechanism. The
def __init__(self, name, money)
is the classes' constructor. It builds up the object in memory. If you now want to open a new account you have to make an instance of your class. In order to do that, you have to call the constructor and pass the needed parameters. In Python a constructor is called by the classes's name:If Spiderman wants to buy M.J. a new ring he has to withdraw some money. He would call the
withdraw
method on his account:If he wants to see the balance he calls:
The whole thing about classes is to model objects, their attributes and mechanisms. To create an object, instantiate it like in the example. Values are passed to classes with getter and setter methods like `earn_money()´. Those methods access your objects variables. If you want your class to store another object you have to define a variable for that object in the constructor.