classes and objects - software carpentryclasses and objects basics every object has its own...
TRANSCRIPT
![Page 1: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/1.jpg)
Basics
Copyright © Software Carpentry 2010This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.
Classes and Objects
![Page 2: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/2.jpg)
Classes and Objects Basics
Two basic concepts in OOP are class and object
![Page 3: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/3.jpg)
Classes and Objects Basics
Two basic concepts in OOP are class and object
A class defines the behavior of a new kind of thing
![Page 4: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/4.jpg)
Classes and Objects Basics
Two basic concepts in OOP are class and object
A class defines the behavior of a new kind of thing
An object is a thing with particular properties
![Page 5: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/5.jpg)
Classes and Objects Basics
Biology Programming
General
Specific
Two basic concepts in OOP are class and object
A class defines the behavior of a new kind of thing
An object is a thing with particular properties
![Page 6: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/6.jpg)
Classes and Objects Basics
Biology Programming
GeneralSpecies
canis lupus
SpecificOrganism
Waya
Two basic concepts in OOP are class and object
A class defines the behavior of a new kind of thing
An object is a thing with particular properties
![Page 7: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/7.jpg)
Classes and Objects Basics
Biology Programming
GeneralSpecies
canis lupusClassVector
SpecificOrganism
WayaObject
velocity
Two basic concepts in OOP are class and object
A class defines the behavior of a new kind of thing
An object is a thing with particular properties
![Page 8: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/8.jpg)
Classes and Objects Basics
Define a new class with no behavior
![Page 9: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/9.jpg)
Classes and Objects Basics
Define a new class with no behavior
>>> class Empty(object):
... pass
![Page 10: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/10.jpg)
Classes and Objects Basics
Define a new class with no behavior
>>> class Empty(object):
... passCreate two objects of that class
![Page 11: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/11.jpg)
Classes and Objects Basics
Define a new class with no behavior
>>> class Empty(object):
... passCreate two objects of that class
>>> first = Empty()
>>> second = Empty()
![Page 12: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/12.jpg)
Classes and Objects Basics
Define a new class with no behavior
>>> class Empty(object):
... passCreate two objects of that class
>>> first = Empty()
>>> second = Empty()
>>> print 'first is', id(first)
35855140
>>> print 'second is', id(second)
35855152
![Page 13: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/13.jpg)
Classes and Objects Basics
Contents of memory
first
second
Empty
![Page 14: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/14.jpg)
Classes and Objects Basics
Contents of memory
first
second
Empty
object
![Page 15: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/15.jpg)
Classes and Objects Basics
Define the class's behavior with methods
![Page 16: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/16.jpg)
Classes and Objects Basics
Define the class's behavior with methods
A function defined inside a class…
![Page 17: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/17.jpg)
Classes and Objects Basics
Define the class's behavior with methods
A function defined inside a class…
…that is called for an object of that class
![Page 18: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/18.jpg)
Classes and Objects Basics
Define the class's behavior with methods
A function defined inside a class…
…that is called for an object of that class
class Greeter(object):
def greet(self, name):
print 'hello', name, '!'
![Page 19: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/19.jpg)
Classes and Objects Basics
Define the class's behavior with methods
A function defined inside a class…
…that is called for an object of that class
class Greeter(object):
def greet(self, name):
print 'hello', name, '!'
![Page 20: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/20.jpg)
Classes and Objects Basics
Define the class's behavior with methods
A function defined inside a class…
…that is called for an object of that class
class Greeter(object):
def greet(self, name):
print 'hello', name, '!'
![Page 21: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/21.jpg)
Classes and Objects Basics
Define the class's behavior with methods
A function defined inside a class…
…that is called for an object of that class
class Greeter(object):
def greet(self, name):
print 'hello', name, '!'
g = Greeter()
g.greet('Waya')
hello Waya !
![Page 22: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/22.jpg)
Classes and Objects Basics
Define the class's behavior with methods
A function defined inside a class…
…that is called for an object of that class
class Greeter(object):
def greet(self, name):
print 'hello', name, '!'
g = Greeter()
g.greet('Waya')
hello Waya !
![Page 23: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/23.jpg)
Classes and Objects Basics
Define the class's behavior with methods
A function defined inside a class…
…that is called for an object of that class
class Greeter(object):
def greet(self, name):
print 'hello', name, '!'
g = Greeter()
g.greet('Waya')
hello Waya !
![Page 24: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/24.jpg)
Classes and Objects Basics
Define the class's behavior with methods
A function defined inside a class…
…that is called for an object of that class
class Greeter(object):
def greet(self, name):
print 'hello', name, '!'
g = Greeter()
g.greet('Waya')
hello Waya !
![Page 25: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/25.jpg)
Classes and Objects Basics
Contents of memory
greet
stack heap
gGreeter
![Page 26: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/26.jpg)
Classes and Objects Basics
Contents of memory
greet
stack heap
gGreeter
selfname
'Waya'
![Page 27: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/27.jpg)
Classes and Objects Basics
Every object has its own variables
![Page 28: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/28.jpg)
Classes and Objects Basics
Every object has its own variables members
![Page 29: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/29.jpg)
Classes and Objects Basics
Every object has its own variables
Create new ones by assigning them values
![Page 30: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/30.jpg)
Classes and Objects Basics
Every object has its own variables
Create new ones by assigning them values
class Empty(object):
pass
e = Empty()
e.value = 123
print e.value
123
![Page 31: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/31.jpg)
Classes and Objects Basics
Every object has its own variables
Create new ones by assigning them values
class Empty(object):
pass
e = Empty() e2 = Empty()
e.value = 123 print e2.value
print e.value AttributeError:
'Empty'
123 object has no
attribute
'value'
![Page 32: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/32.jpg)
Classes and Objects Basics
The values of member variables customize objects
![Page 33: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/33.jpg)
Classes and Objects Basics
The values of member variables customize objects
Use them in methods
![Page 34: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/34.jpg)
Classes and Objects Basics
The values of member variables customize objects
Use them in methods
class Greeter(object):
def greet(self, name):
print self.hello, name, '!'
![Page 35: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/35.jpg)
Classes and Objects Basics
The values of member variables customize objects
Use them in methods
class Greeter(object):
def greet(self, name):
print self.hello, name, '!'
![Page 36: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/36.jpg)
Classes and Objects Basics
Every object has its own variables
Create new ones by assigning them values
class Greeter(object):
def greet(self, name):
print self.hello, name, '!'
g = Greeter()
![Page 37: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/37.jpg)
Classes and Objects Basics
Every object has its own variables
Create new ones by assigning them values
class Greeter(object):
def greet(self, name):
print self.hello, name, '!'
g = Greeter()
g.hello = 'Bonjour'
![Page 38: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/38.jpg)
Classes and Objects Basics
Every object has its own variables
Create new ones by assigning them values
class Greeter(object):
def greet(self, name):
print self.hello, name, '!'
g = Greeter()
g.hello = 'Bonjour'
g.greet('Waya')
Bonjour Waya !
![Page 39: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/39.jpg)
Classes and Objects Basics
Every object has its own variables
Create new ones by assigning them values
class Greeter(object):
def greet(self, name):
print self.hello, name, '!'
g = Greeter() g2 = Greeter()
g.hello = 'Bonjour' g2.hello =
'Salut'
g.greet('Waya') g2.greet('Waya')
Bonjour Waya ! Salut Waya !
![Page 40: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/40.jpg)
Classes and Objects Basics
Contents of memory
hello
greet
stack heap
gGreeter
'Bonjour'
![Page 41: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/41.jpg)
Classes and Objects Basics
Contents of memory
hello
greet
stack heap
gGreeter
selfname
'Waya'
'Bonjour'
![Page 42: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/42.jpg)
Classes and Objects Basics
Every object's names are separate
![Page 43: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/43.jpg)
Classes and Objects Basics
Every object's names are separate
class Greeter(object):
def greet(self, name):
print self.hello, name, '!'
hello = 'Hola'
g = Greeter()
g.hello = 'Bonjour'
g.greet('Waya')
Bonjour Waya !
![Page 44: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/44.jpg)
Classes and Objects Basics
Creating objects and then giving them members is
error-prone
![Page 45: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/45.jpg)
Classes and Objects Basics
Creating objects and then giving them members is
error-prone
Might forget some (especially when making changes)
![Page 46: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/46.jpg)
Classes and Objects Basics
Creating objects and then giving them members is
error-prone
Might forget some (especially when making changes)
Any code repeated in two or more places…
![Page 47: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/47.jpg)
Classes and Objects Basics
Creating objects and then giving them members is
error-prone
Might forget some (especially when making changes)
Any code repeated in two or more places…
Define a constructor for the class
![Page 48: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/48.jpg)
Classes and Objects Basics
Creating objects and then giving them members is
error-prone
Might forget some (especially when making changes)
Any code repeated in two or more places…
Define a constructor for the class
Automatically called as new object is being created
![Page 49: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/49.jpg)
Classes and Objects Basics
Creating objects and then giving them members is
error-prone
Might forget some (especially when making changes)
Any code repeated in two or more places…
Define a constructor for the class
Automatically called as new object is being created
A natural place to customize individual objects
![Page 50: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/50.jpg)
Classes and Objects Basics
Creating objects and then giving them members is
error-prone
Might forget some (especially when making changes)
Any code repeated in two or more places…
Define a constructor for the class
Automatically called as new object is being created
A natural place to customize individual objects
Python uses the special name __init__(self,
...)
![Page 51: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/51.jpg)
Classes and Objects Basics
A better Greeter
class Greeter(object):
def __init__(self, what_to_say):
self.hello = what_to_say
def greet(self, name):
print self.hello, name, '!'
![Page 52: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/52.jpg)
Classes and Objects Basics
Why it's better
first = Greeter('Hello')
first.greet('Waya')
Hello Waya !
![Page 53: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/53.jpg)
Classes and Objects Basics
Why it's better
first = Greeter('Hello')
first.greet('Waya')
Hello Waya !
second = Greeter('Bonjour')
second.greet('Waya')
Bonjour Waya !
![Page 54: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/54.jpg)
Classes and Objects Basics
Contents of memory
hello
greet
stack heap
secondfirstGreeter
'Bonjour'
hello 'Hello'
![Page 55: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/55.jpg)
Classes and Objects Basics
A comon mistake
class Greeter(object):
def __init__(self, what_to_say):
hello = what_to_say
def greet(self, name):
print self.hello, name, '!'
![Page 56: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/56.jpg)
Classes and Objects Basics
What goes wrong
first = Greeter('Hello')
![Page 57: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/57.jpg)
Classes and Objects Basics
What goes wrong
first = Greeter('Hello')
first.greet('Waya')
Attribute Error: 'Greeter' object has
no
attribute 'hello'
![Page 58: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/58.jpg)
Classes and Objects Basics
What goes wrong
first = Greeter('Hello')
first.greet('Waya')
Attribute Error: 'Greeter' object has
no
attribute 'hello'self.name stores the value in the object
![Page 59: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/59.jpg)
Classes and Objects Basics
What goes wrong
first = Greeter('Hello')
first.greet('Waya')
Attribute Error: 'Greeter' object has
no
attribute 'hello'self.name stores the value in the object
name on its own is a local variable on the stack
![Page 60: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/60.jpg)
Classes and Objects Basics
What goes wrong
first = Greeter('Hello')
first.greet('Waya')
Attribute Error: 'Greeter' object has
no
attribute 'hello'self.name stores the value in the object
name on its own is a local variable on the stackclass Greeter(object):
def __init__(self, what_to_say)
hello = what_to_say
![Page 61: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/61.jpg)
Classes and Objects Basics
Object data is not protected or hidden in Python
![Page 62: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/62.jpg)
Classes and Objects Basics
Object data is not protected or hidden in Python
first = Greeter('Hello')
first.greet('Waya')
Hello Waya !
first.hello = 'Kaixo'
Kaixo Waya !
![Page 63: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/63.jpg)
Classes and Objects Basics
Object data is not protected or hidden in Python
first = Greeter('Hello')
first.greet('Waya')
Hello Waya !
first.hello = 'Kaixo'
Kaixo Waya !
Some languages prevent this
![Page 64: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/64.jpg)
Classes and Objects Basics
Object data is not protected or hidden in Python
first = Greeter('Hello')
first.greet('Waya')
Hello Waya !
first.hello = 'Kaixo'
Kaixo Waya !
Some languages prevent this
All discourage it
![Page 65: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/65.jpg)
Classes and Objects Basics
A more practical example
class Rectangle(object):
def __init__(self, x0, y0, x1, y1):
assert x0 < x1, 'Non-positive X
extent'
assert y0 < y1, 'Non-positive Y
extent'
self.x0 = x0
self.y0 = y0
self.x1 = x1
self.y1 = y1
![Page 66: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/66.jpg)
Classes and Objects Basics
A more practical example
class Rectangle(object):
def __init__(self, x0, y0, x1, y1):
assert x0 < x1, 'Non-positive X
extent'
assert y0 < y1, 'Non-positive Y
extent'
self.x0 = x0
self.y0 = y0
self.x1 = x1
self.y1 = y1
![Page 67: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/67.jpg)
Classes and Objects Basics
Benefit #1: fail early, fail often
![Page 68: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/68.jpg)
Classes and Objects Basics
Benefit #1: fail early, fail often
# Programmer thinks rectangles are
written
# [[x0, x1], [y0, y1]]
>>> field = [[50, 100], [0, 200]]
![Page 69: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/69.jpg)
Classes and Objects Basics
Benefit #1: fail early, fail often
# Programmer thinks rectangles are
written
# [[x0, x1], [y0, y1]]
>>> field = [[50, 100], [0, 200]]
>>>
# Class knows rectangles are (x0, y0,
x1, y1)
>>> field = Rectangle(50, 100, 0, 200)
AssertionError: non-positive X extent
![Page 70: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/70.jpg)
Classes and Objects Basics
Benefit #2: readability
class Rectangle(object):
...
def area(self):
return (self.x1-self.x0)*(self.y1-
self.y0)
def contains(self, x, y):
return (self.x0 <= x <= self.x1)
and \
(self.y0 <= y <= self.y1)
![Page 71: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/71.jpg)
Classes and Objects Basics
Compare
List of Lists Object
field = [[0, 0], [100, 100]]
field = Rectangle(0, 0, 100, 100)
rect_area(field) field.area()
rect_contains(field, 20, 25) field.contains(20, 25)
![Page 72: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/72.jpg)
Classes and Objects Basics
Compare
List of Lists Object
field = [[0, 0], [100, 100]]
field = Rectangle(0, 0, 100, 100)
rect_area(field) field.area()
rect_contains(field, 20, 25) field.contains(20, 25)
Make it even clearer by creating a Point2D class
![Page 73: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/73.jpg)
Classes and Objects Basics
Compare
List of Lists Object
field = [[0, 0], [100, 100]]
field = Rectangle(0, 0, 100, 100)
rect_area(field) field.area()
rect_contains(field, 20, 25) field.contains(20, 25)
Make it even clearer by creating a Point2D class
Then re-defining Rectangle in terms of it
![Page 74: Classes and Objects - Software CarpentryClasses and Objects Basics Every object has its own variables Create new ones by assigning them values class Empty(object): pass e = Empty()](https://reader033.vdocument.in/reader033/viewer/2022042308/5ed4b9e70b1c4b116053bacd/html5/thumbnails/74.jpg)
January 2011
Copyright © Software Carpentry 2010This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.
created by
Greg Wilson