classes in python - drexel cci · multiple inheritance 11 standard syntax for multiple base classes...
TRANSCRIPT
Classes in PythonSteve Nguyen
1
Saturday, November 20, 2010
Overview
• Class Definitions, Objects, Instance Objects, Method Objects
• Inheritance
• Multiple Inheritance
• Private Variables
• Odds and Ends
• Exceptions
• Iterators
• Generators and Generator Expressions
2
Saturday, November 20, 2010
Class Definitions
The simplest form of a class definition
• Class definitions must be executed before they have any effect
• Functions definitions take the form of an argument list• Uses the same calling conventions as methods
• A new namespace is created when a class is defined and use as a local scope.
• namespace: a mapping of names to objects• scope: the region where a namespace can be accessed
directly3
Saturday, November 20, 2010
Class Objects
Attribute References:•Uses the standard . (dot) syntax•Example: MyClass.i or MyClass.f
•MyClass.i will return 12345•MyClass.f will return the function f
•MyClass.__doc__ is also valid, returning the docstring of the class
4
Saturday, November 20, 2010
Class ObjectsClass Instantiation:•Uses the same syntax as function notation
•x = MyClass()•Assigns new class instance to variable x
•Classes can define a special method, __init__()• •Creates a new class instance•Can contain arguments
•
5
Saturday, November 20, 2010
Instance Objects
• You may only use attribute references within instance objects (data attributes and methods)
• Data attributes are the same as members in C++
•
• Instance methods are class functions that are called within an instance
• Example: x.f is valid since it is a function defined in MyClass (see Slide 4), but x.i is not
6
Saturday, November 20, 2010
Method Objects
• If x.f() is an instance method, then it can be stored within another variable for later use.
• xf = x.f()
• However, the function definition in MyClass was f(self), it had an argument
• Python automatically fills this in, it is equivalent to calling MyClass.f(x)
• Uses the method’s object as the argument self
7
Saturday, November 20, 2010
Remarks about Attributes
• Data attributes override method attributes with the same name (case-sensitive)
• Data attributes can be referenced by methods and by users, you cannot implement pure abstract data types with classes
• The first argument of a method is self, which holds no real significance other than for readability
• Functions can be defined outside the class and then assigned to a local variable
• Methods can call other methods using the self argument
8
Saturday, November 20, 2010
Inheritance
9
The basic format of a derived class definition
If the base class is contained in another module
•The rules for creating a derived class are the same as a normal, base class.
•Class objects look for data attributes and methods in the derived class first, then look in the base classes
•Derived classes may still override methods of base classes
•However, derived class methods may extend base class methods by calling BaseClassName.methodname(self, arguments)
Saturday, November 20, 2010
Inheritance
• There are two built-in functions that work with inheritance
• isinstance(object, type) checks an instance’s type
• issubclass(class1, class2) checks if class1 is a subclass of class2
10
Saturday, November 20, 2010
Multiple Inheritance
11
Standard syntax for multiple base classes
•Searches for methods: Depth-first, left-to-right
•super(type[,object-or-type])•Used to access inherited methods that have been overridden by the derived class
Saturday, November 20, 2010
Private Variables
• Technically, there are no such things
• There is a naming convention that implies that something should be treated as non-public, _name (one underscore)
• Limited support through name mangling
• Anything in the form __name (two underscores, followed by at most one)
• Textually replaced with _classname__name
• Makes it difficult to access the variable, but not impossible
12
Saturday, November 20, 2010
Odds and Ends
13
Create data types by bundling together named data items and using an empty class definition.
•Can create classes can emulate the methods of a particular data type.
•A function that reads and formats data from a file can be defined as a class that uses read() and readline()
Saturday, November 20, 2010
Exceptions
14
The raise statement:•raise Class, instance
• instance must be an instance of the class or a class derived from it
•raise instance•shorthand for instance.__class__, instance
Unhandled exceptions print exceptionclass: instance
Saturday, November 20, 2010
Iterators
15
for-loops create a start iterator and uses them to traverse the elements in an array, list, file, etc
Saturday, November 20, 2010
Iterators
16
Saturday, November 20, 2010
Generators
• Generators are used to create iterators
• Use the yield statement to return data
• They are more compact forms of class-based iterators, they create __iter__() and next() automatically. Also raise StopIteration automatically.
• Written like ordinary functions
17
Saturday, November 20, 2010
Generatorsdef reverse(data) :
for index in range(len(data)-1, -1, -1) :
yield data[index]
>>> for char in reverse( ‘golf ’ ) :
...print char
...
18
Saturday, November 20, 2010
Generator Expressions
• You can create generators on the fly as expressions, using ( ) instead of [ ]
• sum(i*i for i in range(10))
• Automatically creates iterator to traverse the list created by range
19
Saturday, November 20, 2010
Questions?
20
Saturday, November 20, 2010
References
"9. Classes — Python V2.7 Documentation." Overview — Python V2.7 Documentation. The Python Software Foundation, 13 Nov. 2010. Web. 20 Nov. 2010. <http://docs.python.org/tutorial/classes.html#a-word-about-names-and-objects>.
21
Saturday, November 20, 2010