"""
Before potentially reading along I highly suggest you master how to
use parameters and arguments in python because if you haven't this can
get confusing. Otherwise read along:
The self argument is most frequently used in the __init__ function.
The __init__ function is a constructor function meaning that it
constructs objects in a class.
This is part of the object oriented programming (OOP) branch.
In this example ill be creating a person with values of name, gender and
age.
What 'self' essentailly is, is the class, so when referring to 'self'
you are refering to values in a class.
So 'self.age = age' is just adding a variable in the
class which has the same value as 'age'.
"""
# Creating the class
class Person:
# Creating the constructor method
def __init__(self, name, age, gender):
# defining variables
self.name = name
self.age = age
self.gender = male
# Creating Objects
Person1 = Person("Isabella", 27, "female")
Person2 = Person("Mikkel", 29, "male")
# Creating a list of people:
People = [ Person1, Person2 ]
"""
You can now use the list of people to well.. list people and their
details.
You could make a table of people by making the array 2 dimensional
which can eventually lead to a database,
but this isn't a post to get into that.
"""
"""
Thats essentially how to use constructors, you're creating an object
relative to topic per se. More examples / usages:
"""
class Person:
def __init__(self, name, age, gender):
# The 3 arguments can only be used within this function
# So you must attach it to the class using 'self'
self.name = name
self.age = age
self.gender = gender
def Function(self):
# To be able to use it all around the class.
print(self.name)
print(self.age)
P = Person("Jeff", 27, "male")
P.Function()
# Output:
# >>> Jeff
# >>> 27
#Or
print(P.name)
print(P.age)
# Output:
# >>> Jeff
# >>> 27
"""
So overall this comes to show that self.something is the exact same as
a varible but rather than a global variable or a variable within a
function scope, it's instead a class variable.
So when doing 'self.something' logically you can think of it as:
'class.something'
And thats it. To see a better way of coding the code above you can
carry on reading but although it's not necessary to know.
A better way of calling a class is to use the __call__ method.
This creates an inbuilt constant function within the class that can be
called, rather than creating a function as above.
"""
class Person:
def __init__(self, name, age, gender):
self.name=name
self.age=age
self.gender=gender
def __call__(self):
print(self.name)
print(self.age)
# Creating the object
P = Person("Jeff", 27, "male")
# Calling the call function:
P()
# Output:
# >>> Jeff
# >>> 27
# This makes everything much neater and compact.
# Have a wonderful day :)
def thing_counter(self, thing):
length_of_thing = len(thing)
return length_of_thing
def thing_counter(self, thing):
self._length_of_thing = len(thing)
return self._length_of_thing