Advanced Python (Fall 2017)/lecture7
From ICO wiki test
Lecture 7
Data types
Data type things to know
clases in python describe datatype, and when called, create a new object of that type. type returns the datatype isinstance check if object is an instance of the class
In [3]: class A:
...: pass
...:
In [4]: type(A)
Out[4]: type
In [5]: type(int)
Out[5]: type
In [6]: int(10)
Out[6]: 10
In [7]: float(10)
Out[7]: 10.0
In [8]: isinstance(10, int)
Out[8]: True
In [9]: isinstance(10, float)
Out[9]: False
In [10]: class MyInt(int):
pass
....:
In [11]: a = MyInt(10)
In [12]: a
Out[12]: 10
In [13]: type(a)
Out[13]: __main__.MyInt
In [14]: isinstance(a, int)
Out[14]: True
Magic Methods
there are prefixed and suffixed with '__', sometimes called 'dunder' for 'double underscore'.
They define specific python functionality.
class A:
def __init__(self):
pass
def __str__(self):
return 'I am an instance of A'
a = A()
print(a.__str__())
print(str(a))
Task 1
Make an integer which is: equal to both 5, 6 and the actual number (itself) greater than 3 less than 2
Solution
from unittest import TestCase
class MyInt(int):
"""Define some magic methods!"""
def __lt__(self, x):
if x == 2:
return True
else:
return super().__lt__(x)
def __gt__(self, x):
if x == 3:
return True
else:
return super().__gt__(x)
def __eq__(self, x):
if x == 5 or x == 6:
return True
else:
return super().__eq__(x)
class MyIntTestCase(TestCase):
def test_gt(self):
a = MyInt(1)
self.assertTrue(a > 3)
def test_lt(self):
a = MyInt(100)
self.assertTrue(a < 2)
def test_eq(self):
a = MyInt(1)
self.assertTrue(a == 5)
self.assertTrue(a == 6)
```