Python Language OOP: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 8: Line 8:


=Overview=
=Overview=
Everything in Python is an object, from numbers to modules. The language offers possibility of declaring custom types, and creating object instances for those types. The custom types such declared are no different, intrinsically, from the types already existing in the runtime. The existing types can be extended.
Everything in Python is an object, from numbers to modules. The language offers possibility of declaring custom types, and creating object instances for those types. Creation of new types is achieved by using the <code>class</code> syntax. The custom types such declared are no different, intrinsically, from the types already existing in the runtime. The existing types can be extended.


An object contains data, in form of variables called '''attributes''' and behavior, in form of functions called '''methods'''.
An object contains data, in form of variables called '''attributes''' and behavior, in form of functions called '''methods'''.

Revision as of 21:38, 15 March 2022

External

Internal

TODO

  • How to call a method from inside the constructor. If I try, the compiler says "Unresolved reference"

Overview

Everything in Python is an object, from numbers to modules. The language offers possibility of declaring custom types, and creating object instances for those types. Creation of new types is achieved by using the class syntax. The custom types such declared are no different, intrinsically, from the types already existing in the runtime. The existing types can be extended.

An object contains data, in form of variables called attributes and behavior, in form of functions called methods.

Class

class MyClass:
  def __init__(self):
    pass

The class may be declared with parentheses, but the IDE static checks find those as "redundant":

class MyClass():
  ...

Methods

Special Methods

__str__()

__str__() is used by print(), str() and the string formatters to produce a string representation of an instance.

class MyClass:
  ...
  def __str__(self):
      return self.name + ', ' + self.color

Static Methods

Static Initialization at Class Level

To perform an initialization once, upon creation of the type in the class' namespace, place the code directly under the code definition: All methods placed into the class are also "executed" - like when defining a function in the global namespace - but they are not calling.

class MyClass:
  # executed only once upon creation of the type
  pattern = re.compile(r'^(\w+):(\w+)-(\w+)$')

  def __init__(self):
    ...
  def my_method(self):
    ...

Initialization

Inheritance

Overriding

Polymorphism

.