iteration protocol: implement __iter__() method
sequence protocol ([]): implement __len__() and __getitem__() method with integer argument starting at 0
iterator protocol: implement __next__() method, when exhausted, throw 'StopIteration' exception
repr(object): object implement __repr__() method
str([object[,encoding[,errors]]]):object implement __str__() method
reversed(seq): seq implement __reversed__() or supports the sequence protocol
round(x, [n]): x implement __round__()
context management protocol: implements __enter__() and __exit__() methods
setattr(x, k, v) (x.k = v): x implements __setattr__(self, k, v)
x.k : x implements __getattr__(self, k)
del x.k: x implements __delattr__(self, k)
if k in x: x implements __contains__(self, k)
descriptor protocol: __get__(self, obj, type=None) -> value; __set__(self, obj, value) -> None; __delete__(self, obj) -> None
__metaclass__: create a new class by using a new template type
callable object: implements "__call__" function
...
more...