O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Python Programming Language
Python Programming Language
Carregando em…3
×

Confira estes a seguir

1 de 130 Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Quem viu também gostou (20)

Anúncio

Semelhante a Python - the basics (20)

Mais de University of Technology (13)

Anúncio

Mais recentes (20)

Python - the basics

  1. 1. TRAINING PYTHON INTRODUCTION TO PYTHON (BASIC LEVEL) Editor: Nguyễn Đức Minh Khôi @HCMC University of Technology, September 2011
  2. 2. 9/2/2011 Training Python Chapte 0: Introduction to Python 1 TRAINING PYTHON Chapter 0: INTRODUCTION TO PYTHON
  3. 3. 9/2/2011 Training Python Chapte 0: Introduction to Python 2 CONTENTS Python in general How Python program runs? How to run Python?
  4. 4. 9/2/2011 Training Python Chapte 0: Introduction to Python 3 Python in general • What is python? • High level programming language • Emphasize on code readability • Very clear syntax + large and comprehensive standard library • Use of indentation for block delimiters • Multiprogramming paradigm: OO, imperative, functional, procedural, reflective • A fully dynamic type system and automatic memory management • Scripting language + standalone executable program + interpreter • Can run on many platform: Windows, Linux, Mactonish • Updates: • Newest version: 3.2.2 (CPython, JPython, IronPython) • Website: www.python.org
  5. 5. 9/2/2011 Training Python Chapte 0: Introduction to Python 4 Python in general (Cont’) • Advantages: • Software quality • Developer productivity • Program portability • Support libraries • Component integration • Enjoyment • Disadvantages: • not always be as fast as that of compiled languages such as C and C++
  6. 6. 9/2/2011 Training Python Chapte 0: Introduction to Python 5 Python in general (Cont’) • Applications of python:
  7. 7. 9/2/2011 Training Python Chapte 0: Introduction to Python 6 Python in general (Cont’) • Python’s Capability: • System Programming • GUI • Internet Scripting • Component Integration • Database Programming • Rapid Prototyping • Numeric and Scientific Programming • Gaming, Images, Serial Ports, XML, Robots, and More
  8. 8. 9/2/2011 Training Python Chapte 0: Introduction to Python 7 How Python program runs? Notice: pure Python code runs at speeds somewhere between those of a traditional compiled language and a traditional interpreted language
  9. 9. 9/2/2011 Training Python Chapte 0: Introduction to Python 8 How to run Python? • Install Python 3.2.2: • Go to website: http://www.python.org/download/ and download the latest version of Python • Run and install follow the instructions of the .msi file • If you successfully install, you will see this picture: • Coding Python: • Not IDE support: use notepad++ http://notepad-plus-plus.org/ • Use IDE support: Eclipse (3.7) or Netbeans (7.0)
  10. 10. 9/2/2011 Training Python Chapte 0: Introduction to Python 9 How to run Python? (Cont’) • Install Eclipse: follow the instructions from this website: http://wiki.eclipse.org/FAQ_Where_do_I_get_and_install_Eclipse%3F (you should download the Eclipse Classics version) • Install Pydev plugin for eclipse: follow this instruction: http://pydev.org/manual_101_install.html
  11. 11. 9/2/2011 Training Python Chapte 0: Introduction to Python 10 THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi Contact: nguyenducminhkhoi@gmail.com Main reference: Part I – Getting Started Learning Python – O’reilly
  12. 12. TRAINING PYTHON CHAPTER 1: TYPES AND OPERATIONS
  13. 13. CONTENTS Lists Dictionaries Tuples Files Numeric Typing Dynamic Typing Summary
  14. 14. 5/22/2011 Training Python 3 Lists • Ordered collections of arbitrary objects • Accessed by offset • Variable-length, heterogeneous, and arbitrarily nestable • Of the category “mutable sequence” • Arrays of object references
  15. 15. 5/22/2011 Training Python 4 Lists literals and operations
  16. 16. 5/22/2011 Training Python 5 Lists literals and operations (cont’)
  17. 17. 5/22/2011 Training Python 6 Dictionaries • Accessed by key, not offset • Accessed by key, not offset • Variable-length, heterogeneous, and arbitrarily nestable • Of the category “mutable mapping” • Tables of object references (hash tables)
  18. 18. 5/22/2011 Training Python 7 Dictionaries literals and operations
  19. 19. 5/22/2011 Training Python 8 Dictionaries literals and operations (c)
  20. 20. 5/22/2011 Training Python 9 Tuples • Ordered collections of arbitrary objects • Accessed by offset • Of the category “immutable sequence” • Fixed-length, heterogeneous, and arbitrarily nestable • Arrays of object references
  21. 21. 5/22/2011 Training Python 10 Tuples literals and operations
  22. 22. 5/22/2011 Training Python 11 Tuples literals and operations (con’t)
  23. 23. 5/22/2011 Training Python 12 Files – common operations
  24. 24. 2 NUMERIC TYPES • Integers and floating-point numbers • Complex numbers • Fixed-precision decimal numbers • Rational fraction numbers • Sets • Booleans • Unlimited integer precision • A variety of numeric built-ins and modules
  25. 25. 3 NUMERIC TYPES (Cont’)
  26. 26. 4 NUMERIC TYPES (Cont’)
  27. 27. Dynamic Typing • Variables, Objects, References: • Variables are entries in a system table, with spaces for links to objects. • Objects are pieces of allocated memory, with enough space to represent the values for which they stand. • References are automatically followed pointers from variables to objects.
  28. 28. Dynamic Typing (Cont’) - Shared references • Immutable types:
  29. 29. Dynamic Typing (Cont’) - Shared references • Mutable types: • Notices: • It’s also just the default: if you don’t want such behavior, you can request that Python copy objects instead of making references.
  30. 30. Dynamic Typing (Cont’) - Shared references • Notices (next): • “is” function returns False if the names point to equivalent but different objects, as is the case when we run two different literal expressions. • Small integers and strings are cached and reused, though, is tells us they reference the same single object.
  31. 31. 5/22/2011 Training Python 13 Summary • Object just classification
  32. 32. 5/22/2011 Training Python 14 Summary (con’t) • Object Flexibility • Lists, dictionaries, and tuples can hold any kind of object. • Lists, dictionaries, and tuples can be arbitrarily nested. • Lists and dictionaries can dynamically grow and shrink. • Object copy • Slice expressions with empty limits (L[:]) copy sequences. • The dictionary and set copy method (X.copy()) copies a dictionary or set. • Some built-in functions, such as list, make copies (list(L)). • The copy standard library module makes full copies.
  33. 33. 9/2/2011 Learning Python Chapter 1 1 THANKS FOR LISTENING Editor: Nguy n Đ c Minh Khôi Contact: nguyenducminhkhoi@gmail.com Main reference: Part II – Types and Operations Learning Python – O’reilly
  34. 34. 9/2/2011 Learning Python Chapter 2 1 TRAINING PYTHON STATEMENTS AND SYNTAX
  35. 35. 9/2/2011 Learning Python Chapter 2 2 Content Statements Assignment, Expression, Print Conditional statements Loop statements Iterations and comprehensions
  36. 36. 9/2/2011 Learning Python Chapter 2 3 Python program structures: • Programs are composed of modules. • Modules contain statements. • Statements contain expressions. • Expressions create and process objects.
  37. 37. 9/2/2011 Learning Python Chapter 2 4 Python statements
  38. 38. 9/2/2011 Learning Python Chapter 2 5 Python statements (Cont’)
  39. 39. 9/2/2011 Learning Python Chapter 2 6 Python statements (Cont’)
  40. 40. 9/2/2011 Learning Python Chapter 2 7 Assignment Statements Assignment Properties: • Assignments create object references • Names are created when first assigned • Names must be assigned before being referenced • Some operations perform assignments implicitly Assignment Statement Forms:
  41. 41. 9/2/2011 Learning Python Chapter 2 8 Variable name rules (opt) • Syntax: (underscore or letter) + (any number of letters, digits, or underscores) • Case matters: SPAM is not the same as spam • Reserved words are off-limits
  42. 42. 9/2/2011 Learning Python Chapter 2 9 Expression Statements
  43. 43. 9/2/2011 Learning Python Chapter 2 10 Print Operations • Call format • Example:
  44. 44. 9/2/2011 Learning Python Chapter 2 11 Conditional Statements - IF • General Format: • The if/else ternary expression: • Example:
  45. 45. 9/2/2011 Learning Python Chapter 2 12 IF Statements - Truth tests (opt) Conditional expression: • Any nonzero number or nonempty object is true. • Zero numbers, empty objects, and the special object None are considered false. • Comparisons and equality tests are applied recursively to data structures. • Comparisons and equality tests return True or False (custom versions of 1 and 0). • Boolean “and” and “or” operators return a true or false operand object.
  46. 46. 9/2/2011 Learning Python Chapter 2 13 IF Statements - Truth tests (opt) (Cont) • “and” and “or” operands:
  47. 47. 9/2/2011 Learning Python Chapter 2 14 Loop Statements – while statements • General while format: • Notice:
  48. 48. 9/2/2011 Learning Python Chapter 2 15 Loop Statements – for statements • General Format: • Loop Coding Techniques: • The built-in range function produces a series of successively higher integers, which can be used as indexes in a for. • The built-in zip function returns a series of parallel-item tuples, which can be used to traverse multiple sequences in a for. • Notice: for loops typically run quicker than while-based counter loops, it’s to your advantage to use tools like these that allow you to use for when possible.
  49. 49. 9/2/2011 Learning Python Chapter 2 16 Loop statements - examples
  50. 50. 9/2/2011 Learning Python Chapter 2 17 Iterations and comprehensions • Iterable: • an object is considered iterable if it is either a physically stored sequence or an object that produces one result at a time in the context of an iteration tool like a for loop. • iterable objects include both physical sequences and virtual sequences computed on demand. • Iterations: • Any object with a __next__ method to advance to a next result, which raises StopIteration at the end of the series of results, is considered iterable in Python. • Example:
  51. 51. 9/2/2011 Learning Python Chapter 2 18 List comprehension • Example: • (x + 10): arbitrary expression • (for x in L): iterable object • Extend List Comprehension:
  52. 52. 9/2/2011 Learning Python Chapter 2 19 New Iterator in Python 3.0 • Iterators associated: • built-in type :set, list, dictionary, tuple, file • Dictionary method: keys, values, items • Built-in function: range (multiple iterator), map, zip, filter (single) • Examples:
  53. 53. 9/2/2011 Learning Python Chapter 2 20 Iterators examples (cont’)
  54. 54. 9/2/2011 Learning Python Chapter 2 21 THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi Contact: nguyenducminhkhoi@gmail.com Main reference: Part III – Statements and Syntax Learning Python – O’reilly
  55. 55. 9/6/2011 Training Python Chapter 3 1 TRAINING PYTHON Chapter 3: FUNCTION
  56. 56. 9/6/2011 Training Python Chapter 3 2 CONTENTS Function Basics Scope Arguments Function Advanced Iterations and Comprehension Advanced
  57. 57. 9/6/2011 Training Python Chapter 3 3 Function Basics • Function: A function is a device that groups a set of statements so they can be run more than once in a program. • Why use?: • Maximizing code reuse and minimizing redundancy • Procedural decomposition
  58. 58. 9/6/2011 Training Python Chapter 3 4 Function Basics – def Statements • General format: • Use “def” statements:
  59. 59. 9/6/2011 Training Python Chapter 3 5 Function Basics – Examples
  60. 60. 9/6/2011 Training Python Chapter 3 6 Scopes • Three different scopes • If a variable is assigned inside a def, it is local to that function. • If a variable is assigned in an enclosing def, it is nonlocal to nested functions. • If a variable is assigned outside all defs, it is global to the entire file. • Notice: • All names assigned inside a function def statement (or a lambda, an expression we’ll meet later) are locals by default. • Functions can freely use names as-signed in syntactically enclosing functions and the global scope, but they must declare such nonlocals and globals in order to change them.
  61. 61. 9/6/2011 Training Python Chapter 3 7 Scopes – the LEGB rules
  62. 62. 9/6/2011 Training Python Chapter 3 8 Scopes – examples Global names: X, func Local names: Y, Z # The Built – in Scopes
  63. 63. 9/6/2011 Training Python Chapter 3 9 Scopes – Global statements • Global Statement: • Other ways to access Globals:
  64. 64. 9/6/2011 Training Python Chapter 3 10 Scopes – Global statements(Cont’)
  65. 65. 9/6/2011 Training Python Chapter 3 11 Scopes – Nested functions • Factory function • These terms refer to a function object that remembers values in enclosing scopes regardless of whether those scopes are still present in memory.
  66. 66. 9/6/2011 Training Python Chapter 3 12 Scopes – Nested scope (Cont’) • Nested scope and lambda:
  67. 67. 9/6/2011 Training Python Chapter 3 13 Scopes – Nonlocal statements • The nonlocal statement: • Is a close cousin to global • Like global: nonlocal declares that a name will be changed in an enclosing scope. • Unlike global: • nonlocal applies to a name in an enclosing function’s scope, not the global module scope outside all defs. • nonlocal names must already exist in the enclosing function’s scope when declared • Format:
  68. 68. 9/6/2011 Training Python Chapter 3 14 Scopes – Nonlocal statements (Con’t)
  69. 69. 9/6/2011 Training Python Chapter 3 15 Arguments – Passing Basics • Arguments are passed by automatically assigning objects to local variable names. • Assigning to argument names inside a function does not affect the caller. • Changing a mutable object argument in a function may impact the caller. • Immutable arguments are effectively passed “by value.” • Mutable arguments are effectively passed “by pointer.”
  70. 70. 9/6/2011 Training Python Chapter 3 16 Arguments – Matching Modes • Keyword-only arguments: arguments that must be passed by keyword only and will never be filled in by a positional argument.
  71. 71. 9/6/2011 Training Python Chapter 3 17 Arguments - Examples
  72. 72. 9/6/2011 Training Python Chapter 3 18 Arguments – Examples (Cont’)
  73. 73. 9/6/2011 Training Python Chapter 3 19 Arguments – Bonus Points
  74. 74. 9/6/2011 Training Python Chapter 3 20 Function Advanced • General guidelines: • Coupling: use arguments for inputs and return for outputs. • Coupling: use global variables only when truly necessary. • Coupling: don’t change mutable arguments unless the caller expects it. • Cohesion: each function should have a single, unified purpose. • Size: each function should be relatively small. • Coupling: avoid changing variables in another module file directly.
  75. 75. 9/6/2011 Training Python Chapter 3 21 Function Advanced - Recursions • Examples: • Alternatives:
  76. 76. 9/6/2011 Training Python Chapter 3 22 Function Advanced – Lambda Expression • Lambda format: • Use lambda for: • inline a function definition • defer execution of a piece of code • Notices: • lambda is an expression, not a statement • lambda’s body is a single expression, not a block of statements. • If you have larger logic to code, use def; lambda is for small pieces of inline code. On the other hand, you may find these techniques useful in moderation • Examples:
  77. 77. 9/6/2011 Training Python Chapter 3 23 Lambda Expression (Cont’) • Logic within lambda function: • Nested lambda: • Used with map function: • Used with filter function: • Used with reduce function:
  78. 78. 9/6/2011 Training Python Chapter 3 24 Iterations and Comprehension Part 2 • List Comprehension: • Vs. Map: • Vs. filter: • Vs. Nested for:
  79. 79. 9/6/2011 Training Python Chapter 3 25 Iterations and Comprehension Part 2 • Generators: • Generator functions: are coded as normal def statements but use yield statements to return results one at a time, suspending and resuming their state between each. • Generator expressions: are similar to the list comprehensions of the prior section, but they return an object that produces results on demand instead of building a result list. • Generator functions:
  80. 80. 9/6/2011 Training Python Chapter 3 26 Iterations and Comprehension Part 2 • Generator Expression:
  81. 81. 9/6/2011 Training Python Chapter 3 27 3.0 Comprehension Syntax
  82. 82. 9/6/2011 Training Python Chapter 3 28 Function Pitfall • “List comprehensions were nearly twice as fast as equivalent for loop statements, and map was slightly quicker than list comprehensions when mapping a built-in function such as abs (absolute value)” • Python detects locals statically, when it compiles the def’s code, rather than by noticing assignments as they happen at runtime.
  83. 83. 9/6/2011 Learning Python Chapter 2 29 THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi Contact: nguyenducminhkhoi@gmail.com Main reference: Part IV – Functions Learning Python 4th Edition – O’reilly 2010
  84. 84. TRAINING PYTHON Chapter 4: MODULES
  85. 85. 9/15/2011 Training Python Chapter 4 2 Contents Modules Basics Modules Package Modules in advance
  86. 86. 9/15/2011 Training Python Chapter 4 3 Modules Basics • Modules are process with: • import: Lets a client (importer) fetch a module as a whole • from: Allows clients to fetch particular names from a module • imp.reload: Provides a way to reload a module’s code without stopping Python • Why use Modules? • Code reuse • System namespace partitioning • Implementing service or data
  87. 87. 9/15/2011 Training Python Chapter 4 4 Modules Basics – import statements • How imports work? 1. Find the module’s file. 2. Compile it to byte code (if needed). 3. Run the module’s code to build the objects it defines. • The Module Search Path: 1. The home directory of the program 2. PYTHONPATH directories (if set) 3. Standard library directories 4. The contents of any .pth files (if present)
  88. 88. 9/15/2011 Training Python Chapter 4 5 Modules Basics – create Modules • In fact, both the names of module files and the names of directories used in package must conform to the rules for variable names: • They may, for instance, contain only letters, digits, and underscores. • Package directories also cannot contain platform-specific syntax such as spaces in their names. • Modules in Python can be written in external languages such as C/C++ in Cpython, Java in Jython, .net languages in IronPython
  89. 89. 9/15/2011 Training Python Chapter 4 6 Modules Basics - Usages • The import statement: • The from statement: • The from * statement • The import happens only once
  90. 90. 9/15/2011 Training Python Chapter 4 7 Modules Basics – Usages (Con’t) • Import assigns an entire module object to a single name. • From assigns one or more names to objects of the same names in another module. Be careful:
  91. 91. 9/15/2011 Training Python Chapter 4 8 Modules Basics - namespaces • Files generate Namespaces: • Module statements run on the first import. • Top-level assignments create module attributes. • Module namespaces can be accessed via the attribute__dict__or dir(M) • Modules are a single scope (local is global) • Namespace nesting: • In mod3.py: • In mod2.py: • In mod1.py:
  92. 92. 9/15/2011 Training Python Chapter 4 9 Modules Basics – reloading function • Unlike import and from: • reload is a function in Python, not a statement. • reload is passed an existing module object, not a name. • reload lives in a module in Python 3.0 and must be imported itself. • How to use:
  93. 93. 9/15/2011 Training Python Chapter 4 10 Modules Basics – reload example • In changer.py: • Change global message variable: •
  94. 94. 9/15/2011 Training Python Chapter 4 11 Modules package • Package __init__.py files: • Directory: dir0dir1dir2mod.py • Import statement: import dir1.dir2.mod • Rules: • dir1 and dir2 both must contain an __init__.py file. • dir0, the container, does not require an __init__.py file; this file will simply be ignored if present. • dir0, not dir0dir1, must be listed on the module search path (i.e., it must be the home directory, or be listed in your PYTHONPATH, etc.). • Present in tree mode:
  95. 95. 9/15/2011 Training Python Chapter 4 12 Modules package • Relative import: • instructs Python to import a module named spam located in the same package directory as the file in which this statement appears. • Sibling import:
  96. 96. 9/15/2011 Training Python Chapter 4 13 Modules In Advance – Data Hiding • Minimizing from * Damage: _X and __all__ • you can prefix names with a single underscore (e.g., _X) to prevent them from being copied out when a client imports a module’s names with a from * statement. • Enabling future language features • Mixed Usage Modes: __name__ and __main__ • If the file is being run as a top-level program file, __name__ is set to the string "__main__" when it starts. • If the file is being imported instead, __name__ is set to the module’s name as known by its clients
  97. 97. 9/15/2011 Training Python Chapter 4 14 Modules in Advance (Cont’) • In runme.py: • Unit Tests with __name__: • we can wrap up the self-test call in a __name__ check, so that it will be launched only when the file is run as a top-level script, not when it is imported
  98. 98. 9/15/2011 Training Python Chapter 4 15 Modules in Advance (Cont’) • The as Extension for import and from:
  99. 99. 9/15/2011 Training Python Chapter 4 16 Module Gotchas • Statement Order Matters in Top-Level Code • from Copies Names but Doesn’t Link • from * Can Obscure the Meaning of Variables • Recursive from Imports May Not Work • You can usually eliminate import cycles like this by careful design— maximizing cohesion and minimizing coupling are good first steps.
  100. 100. THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi Contact: nguyenducminhkhoi@gmail.com Main reference: Part V – Modules Learning Python 4th Edition – O’reilly 2010
  101. 101. TRAINING PYTHON Chapter 5: CLASSES AND OOP
  102. 102. 9/18/2011 Training Python Chapter 5: Classes and OOP 2 Contents Class Coding Basics Class Coding Detail Advanced Class topics
  103. 103. 9/18/2011 Training Python Chapter 5: Classes and OOP 3 Class Coding Basics • OOP program must show: • Abstraction (or sometimes called encapsulation) • Inheritance (vs. composition) • Polymorphism • Class vs. Instance Object: • Class: Serve as instance factories. Their attributes provide behavior—data and functions—that is inherited by all the instances generated from them. • Instance: Represent the concrete items in a program’s domain. Their attributes record data that varies per specific object
  104. 104. 9/18/2011 Training Python Chapter 5: Classes and OOP 4 Class Coding Basics (Cont’) • Each class statement generates a new class object. • Each time a class is called, it generates a new instance object. • Instances are automatically linked to the classes from which they are created. • Classes are linked to their superclasses by listing them in parentheses in a class header line; the left-to-right order there gives the order in the tree.
  105. 105. 9/18/2011 Training Python Chapter 5: Classes and OOP 5 Class Coding Basics – Class trees • Notice: • Python uses multiple inheritance: if there is more than one superclass listed in parentheses in a class statement (like C1’s here), their left-to-right order gives the order in which those superclasses will be searched for attributes. • Attributes are usually attached to classes by assignments made within class statements, and not nested inside function def statements. • Attributes are usually attached to instances by assignments to a special argument passed to functions inside classes, called self.
  106. 106. 9/18/2011 Training Python Chapter 5: Classes and OOP 6 Class Coding Basics - Class vs. Instance • Class Object: • The class statement creates a class object and assigns it a name. • Assignments inside class statements make class attributes. • Class attributes provide object state and behavior. • Instance Object: • Calling a class object like a function makes a new instance object. • Each instance object inherits class attributes and gets its own namespace. • Assignments to attributes of self in methods make per-instance attributes.
  107. 107. 9/18/2011 Training Python Chapter 5: Classes and OOP 7 Class Coding Basics © • First Example:
  108. 108. 9/18/2011 Training Python Chapter 5: Classes and OOP 8 Class Coding Basics - Inheritance • Attribute inheritance: • Superclasses are listed in parentheses in a class header. • Classes inherit attributes from their superclasses. • Instances inherit attributes from all accessible classes. • Each object.attribute reference invokes a new, independent search. • Logic changes are made by subclassing, not by changing superclasses.
  109. 109. 9/18/2011 Training Python Chapter 5: Classes and OOP 9 Class Coding Basics – Inheritance © • Second Example:
  110. 110. 9/18/2011 Training Python Chapter 5: Classes and OOP 10 Class Coding Details • Class statement: Assigning names inside the class statement makes class attributes, and nested defs make class methods, but other assignments make attributes, too. • Examples:
  111. 111. 9/18/2011 Training Python Chapter 5: Classes and OOP 11 Class Coding Details © • Method call: • Example:
  112. 112. 9/18/2011 Training Python Chapter 5: Classes and OOP 12 Class Coding Details - Inheritance • Example:
  113. 113. 9/18/2011 Training Python Chapter 5: Classes and OOP 13 Class Coding Details – Inheritance © • Class Interface Techniques: • Real:
  114. 114. 9/18/2011 Training Python Chapter 5: Classes and OOP 14 Class Coding Details – Inheritance ©
  115. 115. 9/18/2011 Training Python Chapter 5: Classes and OOP 15 Class Coding Details – Inheritance © • Abstract superclass:
  116. 116. 9/18/2011 Training Python Chapter 5: Classes and OOP 16 Class Coding Details © • Python namespaces – Assignments Classify names:
  117. 117. 9/18/2011 Training Python Chapter 5: Classes and OOP 17 Class Coding Details – operator overloading • Common operator overloading method:
  118. 118. 9/18/2011 Training Python Chapter 5: Classes and OOP 18 Class Coding Details – operator overloading ©
  119. 119. 9/18/2011 Training Python Chapter 5: Classes and OOP 19 Advanced Class topics - Relationships • Is – relationship vs. has - relationship In employees.py file Express: inheritance – is relationship
  120. 120. 9/18/2011 Training Python Chapter 5: Classes and OOP 20 Advanced Class topics – Relationships © In pizzashop.py file Express: has - relationship
  121. 121. 9/18/2011 Training Python Chapter 5: Classes and OOP 21 Advanced Class topics – Extending built in types • By embedding:
  122. 122. 9/18/2011 Training Python Chapter 5: Classes and OOP 22 Advanced Class topics – Extending built in types • By subclassing:
  123. 123. 9/18/2011 Training Python Chapter 5: Classes and OOP 23 Advanced Class topics – Diamond Inheritance • Old and new style inheritance:
  124. 124. 9/18/2011 Training Python Chapter 5: Classes and OOP 24 Advanced Class topics – Diamond Inheritance • Explicit Conflict Resolution:
  125. 125. 9/18/2011 Training Python Chapter 5: Classes and OOP 25 Advanced Class topics – static class method • Notice:
  126. 126. 9/18/2011 Training Python Chapter 5: Classes and OOP 26 Advanced Class topics – static and class method
  127. 127. 9/18/2011 Training Python Chapter 5: Classes and OOP 27 Advanced Class topics - Decorators • Function decorators provide a way to specify special operation modes for functions, by wrapping them in an extra layer of logic implemented as another function. • Syntax: • Example:
  128. 128. 9/18/2011 Training Python Chapter 5: Classes and OOP 28 Advanced Class topics – Decorators © • Class decorators are similar to function decorators, but they are run at the end of a class statement to rebind a class name to a callable. • Syntax: • Example:
  129. 129. 9/18/2011 Training Python Chapter 5: Classes and OOP 29 Advanced Class topics – Class gotchas • Changing Class Attributes Can Have Side Effects • Changing Mutable Class Attributes Can Have Side Effects, Too • Multiple Inheritance: Order Matters • multiple inheritance works best when your mix-in classes are as self-contained as possible—because they may be used in a variety of contexts, they should not make assumptions about names related to other classes in a tree.
  130. 130. THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi Contact: nguyenducminhkhoi@gmail.com Main reference: Part VI – Classes and OOP Learning Python 4th Edition – O’reilly 2010

×