$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Python 文化中的接口和协议
Search
赖信涛
October 21, 2018
0
580
Python 文化中的接口和协议
2018 PyCon 中国演讲 PPT
赖信涛
October 21, 2018
Tweet
Share
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
RailsConf 2023
tenderlove
30
1.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
80
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
69k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Practical Orchestrator
shlominoach
190
11k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
Navigating Team Friction
lara
191
16k
Transcript
3\WKRQ۸Ӿጱളݗܐᦓ Ӿࢵ Ӥၹ By laixintao
Ø Luatable Ø C Ø Java …… Ø
JavaScript! Ø Python __method__
• • “” • “xxx” • Dunder method
http://lucumr.pocoo.org/2011/7/9/python-and-pola/
None
——Leonardo Rochael
None
None
Python“” • Python “” •
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
__init__ __new__ __del__ https://www.python.org/download/releases/2.2/descrintro/#__new__
__new__
__new__
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
https://www.python.org/dev/peps/pep-0207/ https://docs.python.org/3/reference/expressions.html#value-comparisons obj1 __lt__x obj1
< x obj1.__lt__(x) x > obj1 1. obj1 > x 2. : obj1 < x 3. : obj1.__lt__(x)
@functools.total_ordering • • __eq__
https://github.com/zestyping/q/blob/master/q.py
• __pot__(self) +a • __add__(self,
other) a + b • __add__(self, other) b + a • __iadd__(self, other) • __int__(self) https://docs.python.org/3/library/operator.html
None
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
• __str__ str() • __repr__ repr()
__str__ • __bytes__ bytes() • __format__ format() • __dir__ dir() • __hash__ hash() https://dbader.org/blog/python-repr-vs-str
format
dir() https://github.com/laike9m/pdir2
hash () • • __eq__
• __eq__ hashable https://www.kawabangga.com/posts/1821 https://docs.python.org/3/reference/datamodel.html#object.__hash__
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
__getattr__ __setattr__ __delattr__ __getattribute__ featurehttps://www.kawabangga.com/posts/2809
https://docs.python.org/3/reference/datamodel.html#more-attribute-access-for-new-style-classes
__setattr__
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
• __len__() len() __bool__() return self.__len__()
• __getitem__() obj[key] • __setitem__() obj[key] = value • __missing__() obj[non_exist] • __delitem__() del obj[key] • __iter__() • __reversed__() reversed() __getattr__ __setattr__ __delattr__ __getattribute__ [] .
Python Python forhttp://effbot.org/zone/python-for-statement.htm __getitem__() for
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
• __instancecheck__(self, instance) isinstance(instance, class) • __subclasscheck__(self, subclass) issubclass(subclass,
class)
sized https://github.com/python/cpython/blob/9d4712bc8f26bf1d7e62 6b53ab092fe030bcd68d/Lib/_collections_abc.py#L359
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
First Class Object • •
• • https://dbader.org/blog/python-first-class-functions https://www.kawabangga.com/posts/2613
__call__()
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
• • __enter__()
• __exit__() https://www.kawabangga.com/posts/2010
print
contextlib.contextmanager
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
@property https://www.kawabangga.com/posts/2302
…… •descr.__get__(self, obj, type=None) -> value •descr.__set__(self, obj, value) ->
None •descr.__delete__(self, obj) -> None https://docs.python.org/3.7/howto/descriptor.html
ORM
function method • method __dict__
function • function __get__() method https://docs.python.org/3.7/howto/descriptor.html#functions-and-methods
• ! • '2/& • )%+* •
%," • 1+%) • • -$%. • (# • 0 • • .%
• __copy__(self) copy.copy() • __deepcopy__(self, memodict={}) copy.deepcopy()
pickle • object.__getnewargs_ex__() • object.__getnewargs__() • object.__getstate__() • object.__setstate__(state) •
object.__reduce__() • object.__reduce_ex__(protocol) https://www.kawabangga.com/posts/2782
@laixintao www.kawabangga.com SRE Python