14: Class and Type¶
Summary¶
- There are two main concepts of type
Primitive type: relates to the way data is represented and is the origin of the concept
The second relates to class in object oriented programming
In many object oriented languages defining a class introduces a new type to the type system
A strongly typed language enforces the rule that you have to declare the type of a variable and that variable can from then on only reference objects of that type
- This rule is usually extended to include variables referencing objects of the specified type or a subtype
The reason for this si that it allows you to write partly generic methods which can process the type and all its subtypes
Class hierarchy is a model of the real world
The Liskov Substitution Principle is often used as a justification for hierarchial typing, but it is only an approximation to the real world
Variables do not have a type associated with them and can reference any type of object
- Objects do have a limited notion of type in that their __class__ attribute is set to the class or metaclass that created them
It is important to realize that __class__ can be modified
You can use isinstance and issubclass to check that an object claims to be of the appropriate type
- Another approach is to use defensive programming to test for the presence of any attribute or method you are planning to use via the hasattr function
This is generally called “duck typing”
Program¶
Program Output¶