Book Image

Learning Python Application Development

By : Ninad Sathaye
Book Image

Learning Python Application Development

By: Ninad Sathaye

Overview of this book

Python is one of the most widely used dynamic programming languages, supported by a rich set of libraries and frameworks that enable rapid development. But fast paced development often comes with its own baggage that could bring down the quality, performance, and extensibility of an application. This book will show you ways to handle such problems and write better Python applications. From the basics of simple command-line applications, develop your skills all the way to designing efficient and advanced Python apps. Guided by a light-hearted fantasy learning theme, overcome the real-world problems of complex Python development with practical solutions. Beginning with a focus on robustness, packaging, and releasing application code, you’ll move on to focus on improving application lifetime by making code extensible, reusable, and readable. Get to grips with Python refactoring, design patterns and best practices. Techniques to identify the bottlenecks and improve performance are covered in a series of chapters devoted to performance, before closing with a look at developing Python GUIs.
Table of Contents (18 chapters)
Learning Python Application Development
Credits
Disclaimers
About the Author
About the Reviewer
www.PacktPub.com
Preface
Index

Refactoring preamble


Let's write one more unit test for the game. This time we will focus our attention on the main class AttackOfTheOrcs. When the play method is called, the first thing it does is to randomly occupy the five huts. We will write a test to verify that there are exactly five huts. Another thing to test is that the hut occupant must be an instance of the class AbstractGameUnit, or should be of the type None.

The _occupy_hut method has the related code. But this necessitates writing a test for a non-public method (or call it protected or private).

What you say is right! Although Python does not restrict you from calling methods that start with an underscore, we should be nice to others, and try to avoid calling such methods.

So how do we handle this situation? Here is a list of the available options:

  1. In the test, create an instance of AttackOfThOrcs, and directly call the protected method.

  2. Transform this method into a public method (remove the underscore prefix from the name...