1 / 15

Guide to Programming with Python

Guide to Programming with Python. Chapter Nine Working with/Creating Modules. Fm: http://xkcd.com/353/. Creating Modules. Create, use, and even share your own modules Reuse code Could reuse the Card , Hand , and Deck classes for different card games Manage large projects

espen
Télécharger la présentation

Guide to Programming with Python

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. Guide to Programming with Python Chapter Nine Working with/Creating Modules

  2. Fm: http://xkcd.com/353/

  3. Creating Modules • Create, use, and even share your own modules • Reuse code • Could reuse the Card, Hand, and Deck classes for different card games • Manage large projects • Professional projects can be hundreds of thousands of lines long • Would be nearly impossible to maintain in one file

  4. Using Modules • Module imported using filename, just like built-in modules • Import programmer-created module the same way you import a built-in module import random random.randrange(10) from random import * randrange(10) (import * operation may not work very well on Windows platforms, where the filesystem does not always have accurate information about the case of a filename!) What else have you tried?

  5. Writing Modules • Write module as a collection of related programming components, like functions and classes, in a single file • File is just Python file with extension .py (games module is file games.py) class Player(object): """ A player for a game. """ def __init__(self, name, score = 0): self.name = name self.score = score def __str__(sefl): return "name=" + name + " score=" + str(score) def ask_yes_no(question): """Ask a yes or no question.""" response = None while response not in ("y", "n"): response = raw_input(question).lower() return response

  6. if __name == "__main__" class Player(object): """ A player for a game. """ def __init__(self, name, score = 0): ... if __name__ == "__main__": test = Player("Tom", 100) print tet raw_input("\n\nPress the enter key to exit.") • Why do I need to do this? To make the file usable as a script as well as an importable module, because the code that parses the command line only runs if the module is executed as the “main” file (__name__ == "__main__" is true )

  7. Using Imported Functions and Classes num = games.ask_number(question = "How many?", low = 2, high = 5) player = games.Player(name, score) • Use imported programmer-created modules the same way as you use imported built-in modules

  8. What’s are Defined in a Module? • The built-in function dir() is used to find out which names a module defines. It returns a sorted list of strings: import sys dir(sys)

  9. Module Not Found? • The Module Search Path • When a module named spam is imported, the interpreter searches for a file named spam.py in the current directory, and then in the list of directories specified by the environment variable PYTHONPATH. • Modules are searched in the list of directories given by the variable sys.path import sys sys.path.append('/home/yye/lib/python')

  10. Packages • Packages are a way of structuring Python’s module namespace by using “dotted module names”. For example, the module name A.B designates a submodule named B in a package named A. sound/ Top-level package __init__.py Initialize the sound package formats/ Subpackage for file format conversions __init__.py wavread.py wavwrite.py ... effects/ Subpackage for sound effects __init__.py echo.py import sound.effects.echo #or from sound.effects import echo

  11. The Blackjack Game - Pseudocode Deal each player and dealer initial two cards For each player While the player asks for a hit and the player is not busted Deal the player an additional card If there are no players still playing Show the dealer’s two cards Otherwise While the dealer must hit and the dealer is not busted Deal the dealer an additional card If the dealer is busted For each player who is still playing The player wins Otherwise For each player who is still playing If the player’s total is greater than the dealer’s total The player wins Otherwise, if the player’s total is less than the dealer’s total The player loses Otherwise The player pushes

  12. The Blackjack Game – Class Hierarchy Figure 9.8: Blackjack classes Inheritance hierarchy of classes for the Blackjack game

  13. Guide to Programming with Python The Blackjack Game - Classes Table 9.1: Blackjack classes

  14. Summary • You can write, import, and even share your own modules • You write a module as a collection of related programming components, like functions and classes, in a single Python file • Programmer-created modules can be imported the same way that built-in modules are, with an import statement • You test to see if __name__ is equal to "__main__" to make a module identify itself as such

  15. KeyOOP Concepts • Inheritance • Inheriting vs. overriding (Implementing a new one or adding) • Polymorphism means that the same message can be sent to objects of different classes related by inheritance and achieve different and appropriate results. For example, when Human or Comput object calls flip_or_take() methods, they do things differently. Polymorphism enables objects of different types to be substituted (e.g., the human-vs-compute Flip game to human-vs-human Flip game). • Encapsulation • The inclusion within a program object of all the resources needed for the object to function: the methods and the data to hide the details of the inner workings from the client code. • Encapsulation is a principle of abstraction -- a concept or idea not associated with any specific instance (OOP attempts to abstract both data and code)

More Related