16.2. OOP Class Instance

  • Definition: instance - object created from class

  • Instances are objects

  • Convention: snake_case names

  • Convention: Two newlines between class and instances

instance
object

Computer software entity created from a class.

16.2.1. Class vs Instance

../../_images/oop-classes-class.jpg

Figure 16.1. Class. Source: [1]

../../_images/oop-classes-instances.jpg

Figure 16.2. Instances. Source: [2]

16.2.2. One Class, One Instance

One class and one instance:

>>> class User:
...     pass
...
>>> mark = User()

16.2.3. One Class, Many Instances

One class and three instances:

>>> class User:
...     pass
>>>
>>>
>>> mark = User()
>>> melissa = User()
>>> rick = User()

16.2.4. Many Classes, Many Instances

Two classes and six instances. One instance of an Admin class, and five instances of User class:

>>> class User:
...     pass
...
>>> class Admin:
...     pass
...
>>>
>>> melissa = Admin()
>>> mark = User()
>>> rick = User()
>>> alex = User()
>>> beth = User()
>>> chris = User()

16.2.5. Naming Convention

>>> first_name = str()
>>> last_name = str()
>>>
>>> firstname = str()
>>> lastname = str()
>>>
>>> fname = str()
>>> lname = str()
>>> class User:
...     pass
...
>>>
>>> mark_watney = User()
>>> melissa_lewis = User()
>>>
>>> markwatney = User()
>>> melissalewis = User()
>>>
>>> mwatney = User()
>>> mlewis = User()

16.2.6. Type vs Isinstance

>>> class User:
...     pass
>>>
>>> mark = User()
>>> isinstance(mark, User)
True
>>> type(mark)
<class '__main__.User'>
>>> type(mark) is User
True
>>>
>>> mark is User
False

16.2.7. Use Case - 0x01

>>> x = int()
>>> y = int()
>>>
>>> x
0
>>> y
0
>>> class Int:
...     pass
...
>>> x = Int()
>>> y = Int()

16.2.8. Use Case - 0x02

>>> x = int()
>>> y = float()
>>>
>>> x
0
>>> y
0.0
>>> class Int:
...     pass
...
>>> class Float:
...     pass
...
>>> x = int()
>>> y = float()

16.2.9. Use Case - 0x03

>>> a = int()
>>> b = float()
>>> c = bool()
>>> d = str()
>>> e = list()
>>> f = tuple()
>>> g = set()
>>> h = dict()

16.2.10. Use Case - 0x04

>>> class Astronaut:
...     pass
>>>
>>>
>>> mark = Astronaut()
>>> melissa = Astronaut()
>>> rick = Astronaut()
>>> alex = Astronaut()
>>> beth = Astronaut()
>>> chris = Astronaut()

16.2.11. Use Case - 0x05

>>> class AstronautPilot:
...     pass
...
>>> class AstronautScientist:
...     pass
...
>>> class AstronautEngineer:
...     pass
...
>>> class AstronautMedic:
...     pass
>>>
>>>
>>>
>>> mark_watney = AstronautScientist()
>>> melissa_lewis = AstronautEngineer()
>>> rick_martinez = AstronautPilot()
>>> alex_vogel = AstronautScientist()
>>> beth_johanssen = AstronautEngineer()
>>> chris_beck = AstronautMedic()

16.2.12. References

16.2.13. Assignments

Code 16.3. Solution
"""
* Assignment: OOP Class Iris
* Type: class assignment
* Complexity: easy
* Lines of code: 3 lines
* Time: 2 min

English:
    1. Create instance `setosa` of a class `Iris`
    2. Create instance `virginica` of a class `Iris`
    3. Create instance `versicolor` of a class `Iris`
    4. Run doctests - all must succeed

Polish:
    1. Stwórz instancję `setosa` klasy `Iris`
    2. Stwórz instancję `virginica` klasy `Iris`
    3. Stwórz instancję `versicolor` klasy `Iris`
    4. Uruchom doctesty - wszystkie muszą się powieść

Tests:
    >>> import sys; sys.tracebacklimit = 0
    >>> from inspect import isclass

    >>> assert isclass(Iris)
    >>> assert isinstance(setosa, Iris)
    >>> assert isinstance(versicolor, Iris)
    >>> assert isinstance(virginica, Iris)
"""

class Iris:
    pass



Code 16.4. Solution
"""
* Assignment: OOP Class Instance
* Type: class assignment
* Complexity: easy
* Lines of code: 2 lines
* Time: 2 min

English:
    1. Define class `Astronaut`
    2. Define class `SpaceAgency`
    3. Create instance `mark` of a class `Astronaut`
    4. Create instance `nasa` of a class `SpaceAgency`
    5. Run doctests - all must succeed

Polish:
    1. Zdefiniuj klasę `Astronaut`
    2. Zdefiniuj klasę `SpaceAgency`
    3. Stwórz instancję `mark` klasy `Astronaut`
    4. Stwórz instancję `nasa` klasy `SpaceAgency`
    5. Uruchom doctesty - wszystkie muszą się powieść

Tests:
    >>> import sys; sys.tracebacklimit = 0
    >>> from inspect import isclass

    >>> assert isclass(Astronaut)
    >>> assert isclass(SpaceAgency)
    >>> assert isinstance(mark, Astronaut)
    >>> assert isinstance(nasa, SpaceAgency)
"""

class Astronaut:
    pass


class SpaceAgency:
    pass