Python Object and Classes
(Sponsors) Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!
Creating object and classes
Python is an object-oriented language. In python everything is object i.e int
Object oriented programming use objects to create programs, and these objects stores data and behaviors.
Defining class
Class name in python is preceded with class keyword followed by colon ( : ). Classes commonly contains data field to store the data and methods for defining behaviors. Also every class in python contains a special method called initializer
Let’s see an example.
123456789 | classPerson: # constructor or initializer def__init__(self,name): self.name=name# name is data field also commonly known as instance variables # method which returns a string defwhoami(self): return"You are "+self.name |
here we have created a class called Person which contains one data field called name and method whoami().
What is self ??
All methods in python including some special methods like initializer have first parameter self . This parameter refers to the object which invokes the method. When you create new object the self parameter in the __init__ method is automatically set to reference the object you have just created.
Creating object from class
123 | p1=Person('tom')# now we have created a new person object p1print(p1.whoami())print(p1.name) |
Expected Output:
12 | You are tomtom |
Note: When you call a method you don’t need to pass anything to self parameter, python automatically does that for you behind the scenes.
You can also change the name data field.
12 | p1.name='jerry'print(p1.name) |
Expected Output:
1 | jerry |
Although it is a bad practice to give access to your data fields outside the class. We will discuss how to prevent this next.
Hiding data fields
To hide data fields you need to define private data fields. In python you can create private data field using two leading underscores. You can also define a private method using two leading underscores.
Let’s see an example
1234567891011121314151617181920212223242526 | classBankAccount: # constructor or initializer def__init__(self,name,money): self.__name=name self.__balance=money # __balance is private now, so it is only accessible inside the class defdeposit(self,money): self.__balance+=money defwithdraw(self,money): ifself.__balance>money: self.__balance-=money returnmoney else: return"Insufficient funds" defcheckbalance(self): returnself.__balanceb1=BankAccount('tim',400)print(b1.withdraw(500))b1.deposit(500)print(b1.checkbalance())print(b1.withdraw(800))print(b1.checkbalance()) |
Expected Output:
1234 | Insufficient funds900800100 |
Let’s try to access __balance data field outside of class.
1 | print(b1.__balance) |
Expected Output:
1 | AttributeError:'BankAccount'objecthas no attribute'__balance' |
As you can see now __balance is not accessible outside the class.
In next chapter we will learn about operator overloading.
Other Tutorials (Sponsors)
This site generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!