From e7124f5b5763e51e5eedcf88de72cb50eb1dc60b Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Wed, 8 Apr 2020 09:47:45 +0200 Subject: [PATCH] =?UTF-8?q?V=C3=BDrazy:=20Je=C5=A1t=C4=9B=20objektov=C3=A1?= =?UTF-8?q?=20verze=20s=20d=C4=9Bdi=C4=8Dnost=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 06-vyrazy/objektove.py | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 06-vyrazy/objektove.py diff --git a/06-vyrazy/objektove.py b/06-vyrazy/objektove.py new file mode 100755 index 0000000..95659f6 --- /dev/null +++ b/06-vyrazy/objektove.py @@ -0,0 +1,66 @@ +#!/usr/bin/python3 + +class Node: + + def eval(self): + raise NotImplemented() + + +class NumNode(Node): + + def __init__(self, x): + self.value = x + + def __str__(self): + return str(self.value) + + def eval(self): + return self.value + + +class BinaryNode(Node): + + def __init__(self, left, right): + self.left = left + self.right = right + + +class AddNode(BinaryNode): + + def __str__(self): + return '(' + str(self.left) + '+' + str(self.right) + ')' + + def eval(self): + return self.left.eval() + self.right.eval() + + +class SubNode(BinaryNode): + + def __str__(self): + return '(' + str(self.left) + '-' + str(self.right) + ')' + + def eval(self): + return self.left.eval() - self.right.eval() + + +class MulNode(BinaryNode): + + def __str__(self): + return '(' + str(self.left) + '*' + str(self.right) + ')' + + def eval(self): + return self.left.eval() * self.right.eval() + + +class DivNode(BinaryNode): + + def __str__(self): + return '(' + str(self.left) + '/' + str(self.right) + ')' + + def eval(self): + return self.left.eval() // self.right.eval() + + +x = AddNode(MulNode(NumNode(3), NumNode(4)), SubNode(NumNode(5), NumNode(6))) +print(x) +print(x.eval()) -- GitLab