• Home
  • About
    • Amal Shehu photo

      Amal Shehu

      An intense desire to design and build applications as a full stack developer.

    • Learn More
    • Email
    • Twitter
    • Facebook
    • Google+
    • LinkedIn
    • Instagram
    • Github
    • StackOverflow
    • Steam
    • Youtube
  • Posts
    • All Posts
    • All Tags
  • Projects

Python Clock

24 Sep 2016

Reading time ~2 minutes

Clock Problem Explained(exercism.io):

Implement a clock that handles times without dates.

Create a clock that is independent of date.

You should be able to add and subtract minutes to it.

Two clocks that represent the same time should be equal to each other.

  • Print time HH:MM
  • "+" or "-" Minutes
  • Independent of date
  • Military format
  • Compare two clocks
  • Add minutes

Source

Pairing session with Erin Drummond https://twitter.com/ebdrummond

Solution

class Clock:

    _objecx = []

The _objecx member variable will store all the initialized clock objects.

def __new__(cls, hour, minute):
      for objec in _objecx:
          if cls.obj == objec:
              return objec
      return cls.obj

Use __new__ when you need to control the creation of a new instance. __new__ is the first step of instance creation. It’s called first, and is responsible for returning a new instance of your class. In general, you shouldn’t need to override __new__ unless you’re subclassing an immutable type like str, int, unicode or tuple. Here creates new clock if not already exist.

def __init__(self, hour, minute):

      self.hour = (hour + (minute // 60)) % 24
      self.minute = minute % 60

Use __init__ when you need to control initialization of a new instance. In contrast, __init__ doesn’t return anything; it’s only responsible for initializing the instance after it’s been created. The clock time formatted and initialized object.


def __eq__(self, another):
      return self.hour == another.hour and self.minute == another.minute

If you want your custom objects to be only comparable for equality with other objects, then you can provide the __eq__ methord. Comparing two clocks and equalize.


def __str__(self):
      return "{0:02d}:{1:02d}".format(self.hour, self.minute)

Python has two different ways to convert an object to a string: str() and repr(). Printing an object uses str(); printing a list containing an object uses str() for the list itself, but the implementation of list. __str__() calls repr() for the individual items. Python3 string formatting function.'{:02d}:{:02d}' - 0 is first digit, 2 digits, d is for integer format.

def add(self, minute_x):
      return Clock(self.hour, self.minute + minute_x)

Defined the __add__ method in Clock class to perform vector addition and then the plus operator would behave as per expectation.

Inspirational quote

The mark of a mature programmer is willingness to throw out code you spent time on when you realize it’s pointless. -Bram Cohen



pythonExercismclock Like Tweet +1