1 / 14

Python programming - Defining Classes

Python programming - Defining Classes. Catapult — Rose Hulman Institute of Technology. We've been creating & using objects. WIDTH = 400 HEIGHT = 50 REPEAT_COUNT = 20 PAUSE_LENGTH = 0.25 win = GraphWin( ‘Giants Win!' , WIDTH, HEIGHT) p = Point(WIDTH/ 2 , HEIGHT/ 2 )

raap
Download Presentation

Python programming - Defining Classes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Python programming - Defining Classes Catapult — Rose Hulman Institute of Technology

  2. We've been creating & using objects WIDTH = 400 HEIGHT = 50 REPEAT_COUNT = 20 PAUSE_LENGTH = 0.25 win = GraphWin(‘Giants Win!', WIDTH, HEIGHT) p = Point(WIDTH/2, HEIGHT/2) t = Text(p, ‘NY Giants—2012 Super Bowl Champs!') t.setStyle('bold') t.draw(win) nextColorIsRed = True t.setFill('blue') for i in range(REPEAT_COUNT): sleep(PAUSE_LENGTH) if nextColorIsRed: t.setFill('red') else: t.setFill('blue') nextColorIsRed = not nextColorIsRed win.close()

  3. Object Terminology • Objects are active data types • They know stuff—instance variables • They can do stuff—methods • Objects are instances of some class • Objects created by calling constructors • UML class diagram: Point x y … Instance variableswritten here getX() getY() move(dx,dy) … Methodswritten here

  4. Key Concept! • A class is like an "object factory" • Calling the constructor tells the classes to make a new object • Parameters to constructor are like "factory options", used to set instance variables • Or think of class like a "rubber stamp" • Calling the constructor stamps out a new object shaped like the class • Parameters to constructor "fill in the blanks". That is, they are used to set instance variables.

  5. Example • Consider:p = Point(200, 100)t = Text(p, 'Go Giants!') t p Pointx _______ y _______ fill _______ outline _______ getX() … getY() … … Textanchor _______ text _______ getAnchor() … getText() … setText(text) setStyle(style) … Pointx _______ y _______ fill _______ outline _______ getX() … getY() … … 200 100 'black' 'black' 200 100 'black' 'black' 'Go Giants' This is a clone of p

  6. Creating Custom Objects: Defining Your Own Classes • Custom objects: • Hide complexity • Provide another way to break problems into pieces • You can define an object, like a “player” or a “square” • Make it easier to pass information around • Other people on your team can write code to use these!

  7. Code to Define a Class Declares a class named Card classCard: """This class represents a card from a standard deck.""" docstring describes class, used by help() function and by Eclipse help

  8. Code to Define a Class Special name, __init__ declares a constructor classCard: """This class represents a card from a standard deck.""" def__init__(self, card, suit): self.cardName = card self.suitName = suit Special self parameter is the first formal parameter of each method in a class. self always refers to the current object Create instance variables just by assigning to them c Card def __init__(self,card,suit): self.cardName = card self.suitName = suit A sample constructor call: c = Card('Ace', 'Hearts') cardName ______ suitName ______ 'Ace' 'Hearts'

  9. Code to Define a Class classCard: """This class represents a card from a standard deck.""" def__init__(self, card, suit): self.cardName = card self.suitName = suit defgetValue(self): """Returns the value of this card in BlackJack. Aces always count as one, so hands need to adjust to count aces as 11.""" pos = cardNames.index(self.cardName) if pos < 10: return pos + 1 return10 self parameter again, no other formal parameters docstring for method use self.<varName> to read instance variable A sample method call: c.getValue() Card…

  10. Code to Define a Class classCard: """This class represents a card from a standard deck.""" def__init__(self, card, suit): self.cardName = card self.suitName = suit defgetValue(self): """Returns the value of this card in BlackJack. Aces always count as one, so hands need to adjust to count aces as 11.""" pos = cardNames.index(self.cardName) if pos < 10: return pos + 1 return10 def__str__(self): returnself.cardName + " of "+ self.suitName Sample uses of __str__ method: print c msg = "Card is " + str(c) Special __str__ method returns a string representation of an object

  11. Stepping Through Some Code Sample use: card = Card('7','Clubs') print card.getValue() print card classCard: """This class represents a card from a standard deck.""" def__init__(self, card, suit): self.cardName = card self.suitName = suit defgetValue(self): """Returns the value of this card in BlackJack. Aces always count as one, so hands need to adjust to count aces as 11.""" pos = cardNames.index(self.cardName) if pos < 10: return pos + 1 return10 def__str__(self): returnself.cardName + " of " + self.suitName

  12. Key Ideas • Constructor: • Defined with special name __init__ • Called like ClassName() • Instance variables: • Created when we assign to them • Live as long as the object lives • self formal parameter: • Implicitly get the value before the dot in the call • Allows method of an object to "talk about itself"

  13. Let's write some code! • A fraction object: • Knows its numerator and denominator • Can do math with it (add, etc) to another fraction • Can print itself intelligently • A bank account object: • Knows it balance • Can tell you its balance • Can accept a deposit • Can provide a withdrawal

  14. You’re using classes already… • In Tic Tac Toe, to define “Square”. • One more game we’ll try – “Moving Smileys” – has a few more of these!

More Related