SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
http://www.tutorialspoint.com/python/python_classes_objects.htm Copyright © tutorialspoint.com
PYTHON OBJECT ORIENTED
Pythonhas beenanobject-oriented language fromday one. Because of this, creating and using classes and
objects are downright easy. This chapter helps youbecome anexpert inusing Python's object-oriented
programming support.
If youdon't have any previous experience withobject-oriented (OO) programming, youmay want to consult an
introductory course onit or at least a tutorialof some sort so that youhave a grasp of the basic concepts.
However, here is smallintroductionof Object-Oriented Programming (OOP) to bring youat speed:
Overview of OOP Terminology
Class: A user-defined prototype for anobject that defines a set of attributes that characterize any object
of the class. The attributes are data members (class variables and instance variables) and methods,
accessed via dot notation.
Class variable: A variable that is shared by allinstances of a class. Class variables are defined withina
class but outside any of the class's methods. Class variables aren't used as frequently as instance variables
are.
Data member: A class variable or instance variable that holds data associated witha class and its
objects.
Function overloading: The assignment of more thanone behavior to a particular function. The
operationperformed varies by the types of objects (arguments) involved.
Instance variable: A variable that is defined inside a method and belongs only to the current instance of
a class.
Inheritance : The transfer of the characteristics of a class to other classes that are derived fromit.
Instance: Anindividualobject of a certainclass. Anobject obj that belongs to a class Circle, for
example, is aninstance of the class Circle.
Instantiation : The creationof aninstance of a class.
Method : A specialkind of functionthat is defined ina class definition.
Object : A unique instance of a data structure that's defined by its class. Anobject comprises bothdata
members (class variables and instance variables) and methods.
Operator overloading: The assignment of more thanone functionto a particular operator.
Creating Classes:
The class statement creates a new class definition. The name of the class immediately follows the keyword class
followed by a colonas follows:
class ClassName:
'Optional class documentation string'
class_suite
The class has a documentationstring, whichcanbe accessed via ClassName.__doc__.
The class_suite consists of allthe component statements defining class members, data attributes and
functions.
Example:
Following is the example of a simple Pythonclass:
class Employee:
'Common base class for all employees'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
The variable empCount is a class variable whose value would be shared among allinstances of a this class.
This canbe accessed as Employee.empCount frominside the class or outside the class.
The first method __init__() is a specialmethod, whichis called class constructor or initializationmethod
that Pythoncalls whenyoucreate a new instance of this class.
Youdeclare other class methods like normalfunctions withthe exceptionthat the first argument to each
method is self. Pythonadds the self argument to the list for you; youdon't need to include it whenyoucall
the methods.
Creating instance objects:
To create instances of a class, youcallthe class using class name and pass inwhatever arguments its __init__
method accepts.
"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
Accessing attributes:
Youaccess the object's attributes using the dot operator withobject. Class variable would be accessed using
class name as follows:
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount
Now, putting allthe concepts together:
#!/usr/bin/python
class Employee:
'Common base class for all employees'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount
Whenthe above code is executed, it produces the following result:
Name : Zara ,Salary: 2000
Name : Manni ,Salary: 5000
Total Employee 2
Youcanadd, remove or modify attributes of classes and objects at any time:
emp1.age = 7 # Add an 'age' attribute.
emp1.age = 8 # Modify 'age' attribute.
del emp1.age # Delete 'age' attribute.
Instead of using the normalstatements to access attributes, youcanuse following functions:
The getattr(obj, name[, default]) : to access the attribute of object.
The hasattr(obj,name) : to check if anattribute exists or not.
The setattr(obj,name,value) : to set anattribute. If attribute does not exist, thenit would be created.
The delattr(obj, name) : to delete anattribute.
hasattr(emp1, 'age') # Returns true if 'age' attribute exists
getattr(emp1, 'age') # Returns value of 'age' attribute
setattr(emp1, 'age', 8) # Set attribute 'age' at 8
delattr(empl, 'age') # Delete attribute 'age'
Built-In Class Attributes:
Every Pythonclass keeps following built-inattributes and they canbe accessed using dot operator like any other
attribute:
__dict__ : Dictionary containing the class's namespace.
__doc__ : Class documentationstring or None if undefined.
__name__: Class name.
__module__: Module name inwhichthe class is defined. This attribute is "__main__" ininteractive
mode.
__bases__ : A possibly empty tuple containing the base classes, inthe order of their occurrence inthe
base class list.
For the above class let's try to access allthese attributes:
#!/usr/bin/python
class Employee:
'Common base class for all employees'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
print "Employee.__doc__:", Employee.__doc__
print "Employee.__name__:", Employee.__name__
print "Employee.__module__:", Employee.__module__
print "Employee.__bases__:", Employee.__bases__
print "Employee.__dict__:", Employee.__dict__
Whenthe above code is executed, it produces the following result:
Employee.__doc__: Common base class for all employees
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: ()
Employee.__dict__: {'__module__': '__main__', 'displayCount':
<function displayCount at 0xb7c84994>, 'empCount': 2,
'displayEmployee': <function displayEmployee at 0xb7c8441c>,
'__doc__': 'Common base class for all employees',
'__init__': <function __init__ at 0xb7c846bc>}
Destroying Objects (Garbage Collection):
Pythondeletes unneeded objects (built-intypes or class instances) automatically to free memory space. The
process by whichPythonperiodically reclaims blocks of memory that no longer are inuse is termed garbage
collection.
Python's garbage collector runs during programexecutionand is triggered whenanobject's reference count
reaches zero. Anobject's reference count changes as the number of aliases that point to it changes.
Anobject's reference count increases whenit's assigned a new name or placed ina container (list, tuple or
dictionary). The object's reference count decreases whenit's deleted withdel, its reference is reassigned, or its
reference goes out of scope. Whenanobject's reference count reaches zero, Pythoncollects it automatically.
a = 40 # Create object <40>
b = a # Increase ref. count of <40>
c = [b] # Increase ref. count of <40>
del a # Decrease ref. count of <40>
b = 100 # Decrease ref. count of <40>
c[0] = -1 # Decrease ref. count of <40>
Younormally won't notice whenthe garbage collector destroys anorphaned instance and reclaims its space. But
a class canimplement the specialmethod __del__(), called a destructor, that is invoked whenthe instance is
about to be destroyed. This method might be used to cleanup any nonmemory resources used by aninstance.
Example:
This __del__() destructor prints the class name of aninstance that is about to be destroyed:
#!/usr/bin/python
class Point:
def __init( self, x=0, y=0):
self.x = x
self.y = y
def __del__(self):
class_name = self.__class__.__name__
print class_name, "destroyed"
pt1 = Point()
pt2 = pt1
pt3 = pt1
print id(pt1), id(pt2), id(pt3) # prints the ids of the obejcts
del pt1
del pt2
del pt3
Whenthe above code is executed, it produces following result:
3083401324 3083401324 3083401324
Point destroyed
Note: Ideally, youshould define your classes inseparate file, thenyoushould import theminyour mainprogram
file using import statement. Kindly check Python- Modules chapter for more details onimporting modules and
classes.
Class Inheritance:
Instead of starting fromscratch, youcancreate a class by deriving it froma preexisting class by listing the parent
class inparentheses after the new class name.
The child class inherits the attributes of its parent class, and youcanuse those attributes as if they were defined in
the child class. A child class canalso override data members and methods fromthe parent.
Syntax:
Derived classes are declared muchlike their parent class; however, a list of base classes to inherit fromare
givenafter the class name:
class SubClassName (ParentClass1[, ParentClass2, ...]):
'Optional class documentation string'
class_suite
Example:
#!/usr/bin/python
class Parent: # define parent class
parentAttr = 100
def __init__(self):
print "Calling parent constructor"
def parentMethod(self):
print 'Calling parent method'
def setAttr(self, attr):
Parent.parentAttr = attr
def getAttr(self):
print "Parent attribute :", Parent.parentAttr
class Child(Parent): # define child class
def __init__(self):
print "Calling child constructor"
def childMethod(self):
print 'Calling child method'
c = Child() # instance of child
c.childMethod() # child calls its method
c.parentMethod() # calls parent's method
c.setAttr(200) # again call parent's method
c.getAttr() # again call parent's method
Whenthe above code is executed, it produces the following result:
Calling child constructor
Calling child method
Calling parent method
Parent attribute : 200
Similar way, youcandrive a class frommultiple parent classes as follows:
class A: # define your class A
.....
class B: # define your calss B
.....
class C(A, B): # subclass of A and B
.....
Youcanuse issubclass() or isinstance() functions to check a relationships of two classes and instances.
The issubclass(sub, sup) booleanfunctionreturns true if the givensubclass sub is indeed a subclass
of the superclass sup.
The isinstance(obj, Class) booleanfunctionreturns true if obj is aninstance of class Class or is an
instance of a subclass of Class
Overriding Methods:
Youcanalways override your parent class methods. One reasonfor overriding parent's methods is because you
may want specialor different functionality inyour subclass.
Example:
#!/usr/bin/python
class Parent: # define parent class
def myMethod(self):
print 'Calling parent method'
class Child(Parent): # define child class
def myMethod(self):
print 'Calling child method'
c = Child() # instance of child
c.myMethod() # child calls overridden method
Whenthe above code is executed, it produces the following result:
Calling child method
Base Overloading Methods:
Following table lists some generic functionality that youcanoverride inyour ownclasses:
SN Method, Description & Sample Call
1 __init__ ( self [,args...] )
Constructor (withany optionalarguments)
Sample Call: obj = className(args)
2 __del__( self )
Destructor, deletes anobject
Sample Call: dell obj
3 __repr__( self )
Evaluatable string representation
Sample Call: repr(obj)
4 __str__( self )
Printable string representation
Sample Call: str(obj)
5 __cmp__ ( self, x )
Object comparison
Sample Call: cmp(obj, x)
Overloading Operators:
Suppose you've created a Vector class to represent two-dimensionalvectors, what happens whenyouuse the
plus operator to add them? Most likely Pythonwillyellat you.
Youcould, however, define the __add__ method inyour class to performvector additionand thenthe plus
operator would behave as per expectation:
Example:
#!/usr/bin/python
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print v1 + v2
Whenthe above code is executed, it produces the following result:
Vector(7,8)
Data Hiding:
Anobject's attributes may or may not be visible outside the class definition. For these cases, youcanname
attributes witha double underscore prefix, and those attributes willnot be directly visible to outsiders.
Example:
#!/usr/bin/python
class JustCounter:
__secretCount = 0
def count(self):
self.__secretCount += 1
print self.__secretCount
counter = JustCounter()
counter.count()
counter.count()
print counter.__secretCount
Whenthe above code is executed, it produces the following result:
1
2
Traceback (most recent call last):
File "test.py", line 12, in <module>
print counter.__secretCount
AttributeError: JustCounter instance has no attribute '__secretCount'
Pythonprotects those members by internally changing the name to include the class name. Youcanaccess such
attributes as object._className__attrName. If youwould replace your last line as following, thenit would work
for you:
.........................
print counter._JustCounter__secretCount
Whenthe above code is executed, it produces the following result:
1
2
2

Mais conteúdo relacionado

Mais procurados

Python Programming Essentials - M20 - Classes and Objects
Python Programming Essentials - M20 - Classes and ObjectsPython Programming Essentials - M20 - Classes and Objects
Python Programming Essentials - M20 - Classes and ObjectsP3 InfoTech Solutions Pvt. Ltd.
 
Python 표준 라이브러리
Python 표준 라이브러리Python 표준 라이브러리
Python 표준 라이브러리용 최
 
Advanced Python, Part 1
Advanced Python, Part 1Advanced Python, Part 1
Advanced Python, Part 1Zaar Hai
 
Symfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 IntegrationSymfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 IntegrationJonathan Wage
 
Building a Pluggable Plugin
Building a Pluggable PluginBuilding a Pluggable Plugin
Building a Pluggable PluginBrandon Dove
 
Object Oriented Programming in PHP
Object Oriented Programming in PHPObject Oriented Programming in PHP
Object Oriented Programming in PHPLorna Mitchell
 
Doctrator Symfony Live 2011 San Francisco
Doctrator Symfony Live 2011 San FranciscoDoctrator Symfony Live 2011 San Francisco
Doctrator Symfony Live 2011 San Franciscopablodip
 
Object Oriented Programming with PHP 5 - More OOP
Object Oriented Programming with PHP 5 - More OOPObject Oriented Programming with PHP 5 - More OOP
Object Oriented Programming with PHP 5 - More OOPWildan Maulana
 
프알못의 Keras 사용기
프알못의 Keras 사용기프알못의 Keras 사용기
프알못의 Keras 사용기Mijeong Jeon
 
iOS와 케라스의 만남
iOS와 케라스의 만남iOS와 케라스의 만남
iOS와 케라스의 만남Mijeong Jeon
 
Class-based views with Django
Class-based views with DjangoClass-based views with Django
Class-based views with DjangoSimon Willison
 

Mais procurados (20)

Spsl v unit - final
Spsl v unit - finalSpsl v unit - final
Spsl v unit - final
 
Python Programming Essentials - M20 - Classes and Objects
Python Programming Essentials - M20 - Classes and ObjectsPython Programming Essentials - M20 - Classes and Objects
Python Programming Essentials - M20 - Classes and Objects
 
Ch8(oop)
Ch8(oop)Ch8(oop)
Ch8(oop)
 
Python oop third class
Python oop   third classPython oop   third class
Python oop third class
 
Python Metaclasses
Python MetaclassesPython Metaclasses
Python Metaclasses
 
Python programming : Abstract classes interfaces
Python programming : Abstract classes interfacesPython programming : Abstract classes interfaces
Python programming : Abstract classes interfaces
 
Python 표준 라이브러리
Python 표준 라이브러리Python 표준 라이브러리
Python 표준 라이브러리
 
Advanced Python, Part 1
Advanced Python, Part 1Advanced Python, Part 1
Advanced Python, Part 1
 
Symfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 IntegrationSymfony2 and Doctrine2 Integration
Symfony2 and Doctrine2 Integration
 
ddd+scala
ddd+scaladdd+scala
ddd+scala
 
Building a Pluggable Plugin
Building a Pluggable PluginBuilding a Pluggable Plugin
Building a Pluggable Plugin
 
Object Oriented Programming in PHP
Object Oriented Programming in PHPObject Oriented Programming in PHP
Object Oriented Programming in PHP
 
Doctrator Symfony Live 2011 San Francisco
Doctrator Symfony Live 2011 San FranciscoDoctrator Symfony Live 2011 San Francisco
Doctrator Symfony Live 2011 San Francisco
 
Codeware
CodewareCodeware
Codeware
 
Python session 7 by Shan
Python session 7 by ShanPython session 7 by Shan
Python session 7 by Shan
 
Python advance
Python advancePython advance
Python advance
 
Object Oriented Programming with PHP 5 - More OOP
Object Oriented Programming with PHP 5 - More OOPObject Oriented Programming with PHP 5 - More OOP
Object Oriented Programming with PHP 5 - More OOP
 
프알못의 Keras 사용기
프알못의 Keras 사용기프알못의 Keras 사용기
프알못의 Keras 사용기
 
iOS와 케라스의 만남
iOS와 케라스의 만남iOS와 케라스의 만남
iOS와 케라스의 만남
 
Class-based views with Django
Class-based views with DjangoClass-based views with Django
Class-based views with Django
 

Semelhante a Python classes objects

Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdfPython Classes_ Empowering Developers, Enabling Breakthroughs.pdf
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdfSudhanshiBakre1
 
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdfPython Classes_ Empowering Developers, Enabling Breakthroughs.pdf
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdfSudhanshiBakre1
 
Introduction to Python - Part Three
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Threeamiable_indian
 
Anton Kasyanov, Introduction to Python, Lecture5
Anton Kasyanov, Introduction to Python, Lecture5Anton Kasyanov, Introduction to Python, Lecture5
Anton Kasyanov, Introduction to Python, Lecture5Anton Kasyanov
 
Programming Primer EncapsulationVB
Programming Primer EncapsulationVBProgramming Primer EncapsulationVB
Programming Primer EncapsulationVBsunmitraeducation
 
My Object Oriented.pptx
My Object Oriented.pptxMy Object Oriented.pptx
My Object Oriented.pptxGopalNarayan7
 
Chap 3 Python Object Oriented Programming - Copy.ppt
Chap 3 Python Object Oriented Programming - Copy.pptChap 3 Python Object Oriented Programming - Copy.ppt
Chap 3 Python Object Oriented Programming - Copy.pptmuneshwarbisen1
 
Object oriented programming with python
Object oriented programming with pythonObject oriented programming with python
Object oriented programming with pythonArslan Arshad
 
Synapseindia object oriented programming in php
Synapseindia object oriented programming in phpSynapseindia object oriented programming in php
Synapseindia object oriented programming in phpSynapseindiappsdevelopment
 
Python programming computer science and engineering
Python programming computer science and engineeringPython programming computer science and engineering
Python programming computer science and engineeringIRAH34
 
Python introduction 2
Python introduction 2Python introduction 2
Python introduction 2Ahmad Hussein
 
Classes & objects new
Classes & objects newClasses & objects new
Classes & objects newlykado0dles
 
Dive into Python Class
Dive into Python ClassDive into Python Class
Dive into Python ClassJim Yeh
 
Presentation 3rd
Presentation 3rdPresentation 3rd
Presentation 3rdConnex
 
Python_Object_Oriented_Programming.pptx
Python_Object_Oriented_Programming.pptxPython_Object_Oriented_Programming.pptx
Python_Object_Oriented_Programming.pptxKoteswari Kasireddy
 

Semelhante a Python classes objects (20)

Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdfPython Classes_ Empowering Developers, Enabling Breakthroughs.pdf
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
 
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdfPython Classes_ Empowering Developers, Enabling Breakthroughs.pdf
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
 
Spsl vi unit final
Spsl vi unit finalSpsl vi unit final
Spsl vi unit final
 
Introduction to Python - Part Three
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Three
 
Unit - 3.pptx
Unit - 3.pptxUnit - 3.pptx
Unit - 3.pptx
 
Anton Kasyanov, Introduction to Python, Lecture5
Anton Kasyanov, Introduction to Python, Lecture5Anton Kasyanov, Introduction to Python, Lecture5
Anton Kasyanov, Introduction to Python, Lecture5
 
Pythonclass
PythonclassPythonclass
Pythonclass
 
Programming Primer EncapsulationVB
Programming Primer EncapsulationVBProgramming Primer EncapsulationVB
Programming Primer EncapsulationVB
 
Python_Unit_2 OOPS.pptx
Python_Unit_2  OOPS.pptxPython_Unit_2  OOPS.pptx
Python_Unit_2 OOPS.pptx
 
My Object Oriented.pptx
My Object Oriented.pptxMy Object Oriented.pptx
My Object Oriented.pptx
 
Chap 3 Python Object Oriented Programming - Copy.ppt
Chap 3 Python Object Oriented Programming - Copy.pptChap 3 Python Object Oriented Programming - Copy.ppt
Chap 3 Python Object Oriented Programming - Copy.ppt
 
Object oriented programming with python
Object oriented programming with pythonObject oriented programming with python
Object oriented programming with python
 
Synapseindia object oriented programming in php
Synapseindia object oriented programming in phpSynapseindia object oriented programming in php
Synapseindia object oriented programming in php
 
Python programming computer science and engineering
Python programming computer science and engineeringPython programming computer science and engineering
Python programming computer science and engineering
 
Python introduction 2
Python introduction 2Python introduction 2
Python introduction 2
 
Only oop
Only oopOnly oop
Only oop
 
Classes & objects new
Classes & objects newClasses & objects new
Classes & objects new
 
Dive into Python Class
Dive into Python ClassDive into Python Class
Dive into Python Class
 
Presentation 3rd
Presentation 3rdPresentation 3rd
Presentation 3rd
 
Python_Object_Oriented_Programming.pptx
Python_Object_Oriented_Programming.pptxPython_Object_Oriented_Programming.pptx
Python_Object_Oriented_Programming.pptx
 

Mais de Smt. Indira Gandhi College of Engineering, Navi Mumbai, Mumbai

Mais de Smt. Indira Gandhi College of Engineering, Navi Mumbai, Mumbai (20)

Artificial Intelligence (AI) application in Agriculture Area
Artificial Intelligence (AI) application in Agriculture Area Artificial Intelligence (AI) application in Agriculture Area
Artificial Intelligence (AI) application in Agriculture Area
 
VLSI Design Book CMOS_Circuit_Design__Layout__and_Simulation
VLSI Design Book CMOS_Circuit_Design__Layout__and_SimulationVLSI Design Book CMOS_Circuit_Design__Layout__and_Simulation
VLSI Design Book CMOS_Circuit_Design__Layout__and_Simulation
 
Question Bank: Network Management in Telecommunication
Question Bank: Network Management in TelecommunicationQuestion Bank: Network Management in Telecommunication
Question Bank: Network Management in Telecommunication
 
INTRODUCTION TO CYBER LAW The Concept of Cyberspace Cyber law Cyber crime.pdf
INTRODUCTION TO CYBER LAW The Concept of Cyberspace Cyber law Cyber crime.pdfINTRODUCTION TO CYBER LAW The Concept of Cyberspace Cyber law Cyber crime.pdf
INTRODUCTION TO CYBER LAW The Concept of Cyberspace Cyber law Cyber crime.pdf
 
LRU_Replacement-Policy.pdf
LRU_Replacement-Policy.pdfLRU_Replacement-Policy.pdf
LRU_Replacement-Policy.pdf
 
Network Management Principles and Practice - 2nd Edition (2010)_2.pdf
Network Management Principles and Practice - 2nd Edition (2010)_2.pdfNetwork Management Principles and Practice - 2nd Edition (2010)_2.pdf
Network Management Principles and Practice - 2nd Edition (2010)_2.pdf
 
Euler Method Details
Euler Method Details Euler Method Details
Euler Method Details
 
Mini Project fo BE Engineering students
Mini Project fo BE Engineering  students  Mini Project fo BE Engineering  students
Mini Project fo BE Engineering students
 
Mini Project for Engineering Students BE or Btech Engineering students
Mini Project for Engineering Students BE or Btech Engineering students Mini Project for Engineering Students BE or Btech Engineering students
Mini Project for Engineering Students BE or Btech Engineering students
 
Ballistics Detsils
Ballistics Detsils Ballistics Detsils
Ballistics Detsils
 
VLSI Design_LAB MANUAL By Umakant Gohatre
VLSI Design_LAB MANUAL By Umakant GohatreVLSI Design_LAB MANUAL By Umakant Gohatre
VLSI Design_LAB MANUAL By Umakant Gohatre
 
Cryptography and Network Security
Cryptography and Network SecurityCryptography and Network Security
Cryptography and Network Security
 
cyber crime, Cyber Security, Introduction, Umakant Bhaskar Gohatre
cyber crime, Cyber Security, Introduction, Umakant Bhaskar Gohatre cyber crime, Cyber Security, Introduction, Umakant Bhaskar Gohatre
cyber crime, Cyber Security, Introduction, Umakant Bhaskar Gohatre
 
Image Compression, Introduction Data Compression/ Data compression, modelling...
Image Compression, Introduction Data Compression/ Data compression, modelling...Image Compression, Introduction Data Compression/ Data compression, modelling...
Image Compression, Introduction Data Compression/ Data compression, modelling...
 
Introduction Data Compression/ Data compression, modelling and coding,Image C...
Introduction Data Compression/ Data compression, modelling and coding,Image C...Introduction Data Compression/ Data compression, modelling and coding,Image C...
Introduction Data Compression/ Data compression, modelling and coding,Image C...
 
Python overview
Python overviewPython overview
Python overview
 
Python numbers
Python numbersPython numbers
Python numbers
 
Python networking
Python networkingPython networking
Python networking
 
Python multithreading
Python multithreadingPython multithreading
Python multithreading
 
Python modules
Python modulesPython modules
Python modules
 

Último

data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfJiananWang21
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdfKamal Acharya
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...tanu pandey
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Arindam Chakraborty, Ph.D., P.E. (CA, TX)
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTbhaskargani46
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdfKamal Acharya
 
Minimum and Maximum Modes of microprocessor 8086
Minimum and Maximum Modes of microprocessor 8086Minimum and Maximum Modes of microprocessor 8086
Minimum and Maximum Modes of microprocessor 8086anil_gaur
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Standamitlee9823
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueBhangaleSonal
 
Employee leave management system project.
Employee leave management system project.Employee leave management system project.
Employee leave management system project.Kamal Acharya
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayEpec Engineered Technologies
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxJuliansyahHarahap1
 
2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projectssmsksolar
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...SUHANI PANDEY
 

Último (20)

data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced LoadsFEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdf
 
Minimum and Maximum Modes of microprocessor 8086
Minimum and Maximum Modes of microprocessor 8086Minimum and Maximum Modes of microprocessor 8086
Minimum and Maximum Modes of microprocessor 8086
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Employee leave management system project.
Employee leave management system project.Employee leave management system project.
Employee leave management system project.
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects
 
Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
 

Python classes objects

  • 1. http://www.tutorialspoint.com/python/python_classes_objects.htm Copyright © tutorialspoint.com PYTHON OBJECT ORIENTED Pythonhas beenanobject-oriented language fromday one. Because of this, creating and using classes and objects are downright easy. This chapter helps youbecome anexpert inusing Python's object-oriented programming support. If youdon't have any previous experience withobject-oriented (OO) programming, youmay want to consult an introductory course onit or at least a tutorialof some sort so that youhave a grasp of the basic concepts. However, here is smallintroductionof Object-Oriented Programming (OOP) to bring youat speed: Overview of OOP Terminology Class: A user-defined prototype for anobject that defines a set of attributes that characterize any object of the class. The attributes are data members (class variables and instance variables) and methods, accessed via dot notation. Class variable: A variable that is shared by allinstances of a class. Class variables are defined withina class but outside any of the class's methods. Class variables aren't used as frequently as instance variables are. Data member: A class variable or instance variable that holds data associated witha class and its objects. Function overloading: The assignment of more thanone behavior to a particular function. The operationperformed varies by the types of objects (arguments) involved. Instance variable: A variable that is defined inside a method and belongs only to the current instance of a class. Inheritance : The transfer of the characteristics of a class to other classes that are derived fromit. Instance: Anindividualobject of a certainclass. Anobject obj that belongs to a class Circle, for example, is aninstance of the class Circle. Instantiation : The creationof aninstance of a class. Method : A specialkind of functionthat is defined ina class definition. Object : A unique instance of a data structure that's defined by its class. Anobject comprises bothdata members (class variables and instance variables) and methods. Operator overloading: The assignment of more thanone functionto a particular operator. Creating Classes: The class statement creates a new class definition. The name of the class immediately follows the keyword class followed by a colonas follows: class ClassName: 'Optional class documentation string' class_suite The class has a documentationstring, whichcanbe accessed via ClassName.__doc__. The class_suite consists of allthe component statements defining class members, data attributes and functions. Example: Following is the example of a simple Pythonclass:
  • 2. class Employee: 'Common base class for all employees' empCount = 0 def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1 def displayCount(self): print "Total Employee %d" % Employee.empCount def displayEmployee(self): print "Name : ", self.name, ", Salary: ", self.salary The variable empCount is a class variable whose value would be shared among allinstances of a this class. This canbe accessed as Employee.empCount frominside the class or outside the class. The first method __init__() is a specialmethod, whichis called class constructor or initializationmethod that Pythoncalls whenyoucreate a new instance of this class. Youdeclare other class methods like normalfunctions withthe exceptionthat the first argument to each method is self. Pythonadds the self argument to the list for you; youdon't need to include it whenyoucall the methods. Creating instance objects: To create instances of a class, youcallthe class using class name and pass inwhatever arguments its __init__ method accepts. "This would create first object of Employee class" emp1 = Employee("Zara", 2000) "This would create second object of Employee class" emp2 = Employee("Manni", 5000) Accessing attributes: Youaccess the object's attributes using the dot operator withobject. Class variable would be accessed using class name as follows: emp1.displayEmployee() emp2.displayEmployee() print "Total Employee %d" % Employee.empCount Now, putting allthe concepts together: #!/usr/bin/python class Employee: 'Common base class for all employees' empCount = 0 def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1 def displayCount(self): print "Total Employee %d" % Employee.empCount def displayEmployee(self): print "Name : ", self.name, ", Salary: ", self.salary "This would create first object of Employee class" emp1 = Employee("Zara", 2000) "This would create second object of Employee class" emp2 = Employee("Manni", 5000)
  • 3. emp1.displayEmployee() emp2.displayEmployee() print "Total Employee %d" % Employee.empCount Whenthe above code is executed, it produces the following result: Name : Zara ,Salary: 2000 Name : Manni ,Salary: 5000 Total Employee 2 Youcanadd, remove or modify attributes of classes and objects at any time: emp1.age = 7 # Add an 'age' attribute. emp1.age = 8 # Modify 'age' attribute. del emp1.age # Delete 'age' attribute. Instead of using the normalstatements to access attributes, youcanuse following functions: The getattr(obj, name[, default]) : to access the attribute of object. The hasattr(obj,name) : to check if anattribute exists or not. The setattr(obj,name,value) : to set anattribute. If attribute does not exist, thenit would be created. The delattr(obj, name) : to delete anattribute. hasattr(emp1, 'age') # Returns true if 'age' attribute exists getattr(emp1, 'age') # Returns value of 'age' attribute setattr(emp1, 'age', 8) # Set attribute 'age' at 8 delattr(empl, 'age') # Delete attribute 'age' Built-In Class Attributes: Every Pythonclass keeps following built-inattributes and they canbe accessed using dot operator like any other attribute: __dict__ : Dictionary containing the class's namespace. __doc__ : Class documentationstring or None if undefined. __name__: Class name. __module__: Module name inwhichthe class is defined. This attribute is "__main__" ininteractive mode. __bases__ : A possibly empty tuple containing the base classes, inthe order of their occurrence inthe base class list. For the above class let's try to access allthese attributes: #!/usr/bin/python class Employee: 'Common base class for all employees' empCount = 0 def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1 def displayCount(self): print "Total Employee %d" % Employee.empCount def displayEmployee(self): print "Name : ", self.name, ", Salary: ", self.salary
  • 4. print "Employee.__doc__:", Employee.__doc__ print "Employee.__name__:", Employee.__name__ print "Employee.__module__:", Employee.__module__ print "Employee.__bases__:", Employee.__bases__ print "Employee.__dict__:", Employee.__dict__ Whenthe above code is executed, it produces the following result: Employee.__doc__: Common base class for all employees Employee.__name__: Employee Employee.__module__: __main__ Employee.__bases__: () Employee.__dict__: {'__module__': '__main__', 'displayCount': <function displayCount at 0xb7c84994>, 'empCount': 2, 'displayEmployee': <function displayEmployee at 0xb7c8441c>, '__doc__': 'Common base class for all employees', '__init__': <function __init__ at 0xb7c846bc>} Destroying Objects (Garbage Collection): Pythondeletes unneeded objects (built-intypes or class instances) automatically to free memory space. The process by whichPythonperiodically reclaims blocks of memory that no longer are inuse is termed garbage collection. Python's garbage collector runs during programexecutionand is triggered whenanobject's reference count reaches zero. Anobject's reference count changes as the number of aliases that point to it changes. Anobject's reference count increases whenit's assigned a new name or placed ina container (list, tuple or dictionary). The object's reference count decreases whenit's deleted withdel, its reference is reassigned, or its reference goes out of scope. Whenanobject's reference count reaches zero, Pythoncollects it automatically. a = 40 # Create object <40> b = a # Increase ref. count of <40> c = [b] # Increase ref. count of <40> del a # Decrease ref. count of <40> b = 100 # Decrease ref. count of <40> c[0] = -1 # Decrease ref. count of <40> Younormally won't notice whenthe garbage collector destroys anorphaned instance and reclaims its space. But a class canimplement the specialmethod __del__(), called a destructor, that is invoked whenthe instance is about to be destroyed. This method might be used to cleanup any nonmemory resources used by aninstance. Example: This __del__() destructor prints the class name of aninstance that is about to be destroyed: #!/usr/bin/python class Point: def __init( self, x=0, y=0): self.x = x self.y = y def __del__(self): class_name = self.__class__.__name__ print class_name, "destroyed" pt1 = Point() pt2 = pt1 pt3 = pt1 print id(pt1), id(pt2), id(pt3) # prints the ids of the obejcts del pt1 del pt2 del pt3 Whenthe above code is executed, it produces following result:
  • 5. 3083401324 3083401324 3083401324 Point destroyed Note: Ideally, youshould define your classes inseparate file, thenyoushould import theminyour mainprogram file using import statement. Kindly check Python- Modules chapter for more details onimporting modules and classes. Class Inheritance: Instead of starting fromscratch, youcancreate a class by deriving it froma preexisting class by listing the parent class inparentheses after the new class name. The child class inherits the attributes of its parent class, and youcanuse those attributes as if they were defined in the child class. A child class canalso override data members and methods fromthe parent. Syntax: Derived classes are declared muchlike their parent class; however, a list of base classes to inherit fromare givenafter the class name: class SubClassName (ParentClass1[, ParentClass2, ...]): 'Optional class documentation string' class_suite Example: #!/usr/bin/python class Parent: # define parent class parentAttr = 100 def __init__(self): print "Calling parent constructor" def parentMethod(self): print 'Calling parent method' def setAttr(self, attr): Parent.parentAttr = attr def getAttr(self): print "Parent attribute :", Parent.parentAttr class Child(Parent): # define child class def __init__(self): print "Calling child constructor" def childMethod(self): print 'Calling child method' c = Child() # instance of child c.childMethod() # child calls its method c.parentMethod() # calls parent's method c.setAttr(200) # again call parent's method c.getAttr() # again call parent's method Whenthe above code is executed, it produces the following result: Calling child constructor Calling child method Calling parent method Parent attribute : 200 Similar way, youcandrive a class frommultiple parent classes as follows: class A: # define your class A .....
  • 6. class B: # define your calss B ..... class C(A, B): # subclass of A and B ..... Youcanuse issubclass() or isinstance() functions to check a relationships of two classes and instances. The issubclass(sub, sup) booleanfunctionreturns true if the givensubclass sub is indeed a subclass of the superclass sup. The isinstance(obj, Class) booleanfunctionreturns true if obj is aninstance of class Class or is an instance of a subclass of Class Overriding Methods: Youcanalways override your parent class methods. One reasonfor overriding parent's methods is because you may want specialor different functionality inyour subclass. Example: #!/usr/bin/python class Parent: # define parent class def myMethod(self): print 'Calling parent method' class Child(Parent): # define child class def myMethod(self): print 'Calling child method' c = Child() # instance of child c.myMethod() # child calls overridden method Whenthe above code is executed, it produces the following result: Calling child method Base Overloading Methods: Following table lists some generic functionality that youcanoverride inyour ownclasses: SN Method, Description & Sample Call 1 __init__ ( self [,args...] ) Constructor (withany optionalarguments) Sample Call: obj = className(args) 2 __del__( self ) Destructor, deletes anobject Sample Call: dell obj 3 __repr__( self ) Evaluatable string representation Sample Call: repr(obj) 4 __str__( self ) Printable string representation Sample Call: str(obj) 5 __cmp__ ( self, x ) Object comparison Sample Call: cmp(obj, x)
  • 7. Overloading Operators: Suppose you've created a Vector class to represent two-dimensionalvectors, what happens whenyouuse the plus operator to add them? Most likely Pythonwillyellat you. Youcould, however, define the __add__ method inyour class to performvector additionand thenthe plus operator would behave as per expectation: Example: #!/usr/bin/python class Vector: def __init__(self, a, b): self.a = a self.b = b def __str__(self): return 'Vector (%d, %d)' % (self.a, self.b) def __add__(self,other): return Vector(self.a + other.a, self.b + other.b) v1 = Vector(2,10) v2 = Vector(5,-2) print v1 + v2 Whenthe above code is executed, it produces the following result: Vector(7,8) Data Hiding: Anobject's attributes may or may not be visible outside the class definition. For these cases, youcanname attributes witha double underscore prefix, and those attributes willnot be directly visible to outsiders. Example: #!/usr/bin/python class JustCounter: __secretCount = 0 def count(self): self.__secretCount += 1 print self.__secretCount counter = JustCounter() counter.count() counter.count() print counter.__secretCount Whenthe above code is executed, it produces the following result: 1 2 Traceback (most recent call last): File "test.py", line 12, in <module> print counter.__secretCount AttributeError: JustCounter instance has no attribute '__secretCount' Pythonprotects those members by internally changing the name to include the class name. Youcanaccess such attributes as object._className__attrName. If youwould replace your last line as following, thenit would work
  • 8. for you: ......................... print counter._JustCounter__secretCount Whenthe above code is executed, it produces the following result: 1 2 2