part 1
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
a = Point(1, 2)
b = Point(x=1, y=2)
class Point:
def __init__(self, *, x, y):
self.x = x
self.y = y
class Panda:
def __init__(self, name, age, weight):
self.name = name
self.age = age
self.weight = weight
def eat(self, kg):
if self.weight < 1000:
self.weight += kg
def celebrate_birthday(self):
self.age += 1
class Panda:
def __init__(self, name):
self.name = name
self._age = 1
self.__weight = 100
def _add_weight(self, kg):
self.__weight += kg
def eat(self, kg):
if self.__weight < 1000:
self._add_weight(kg)
class Panda:
def __init__(self, name, weight):
self.name = name
self.weight = weight
def __str__(self):
return f'I am {self.name} panda.'
def __repr__(self):
return f'Panda {self.name} / {self.weight}'
>>> p = Panda('Marto', 100)
>>> p
Panda Marto / 100
>>> print(p)
I am Marto panda.
>>> f'Calling __str__ here: {p}'
'Calling __str__ here: I am Marto panda.'
class Panda:
def __init__(self, name, weight):
self.name = name
self.weight = weight
def __eq__(self, other):
return self.weight == other.weight
>>> marto = Panda('Marto', 100)
>>> ivo = Panda('Ivo', 200)
>>> marto is ivo
False
>>> marto == ivo
False
>>> ivo.weight = 100
>>> marto == ivo
True
>>> marto is ivo
False
>>> int1 = 100
>>> int2 = 100
>>> int1 is int2
True
>>> int1 == int2
True
>>> str1 = 'asd'
>>> str2 = 'asd'
>>> str1 is str2
True
>>> str1 == str2
True
>>> items1 = [1, 2, 3]
>>> items2 = [1, 2, 3]
>>> items1 is items2
False
>>> items1 == items2
True
>>> type(100)
<class 'int'>
>>> type((100)) is int
True
>>> type((100,))
<class 'tuple'>
>>> type([])
<class 'list'>
>>> type([]) is list
True
>>> type(type(list))
<class 'type'>
>>> type(type)
<class 'type'>