Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Python 文化中的接口和协议
Search
赖信涛
October 21, 2018
0
450
Python 文化中的接口和协议
2018 PyCon 中国演讲 PPT
赖信涛
October 21, 2018
Tweet
Share
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
220
8.8k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
What’s in a name? Adding method to the madness
productmarketing
PRO
21
3k
Git: the NoSQL Database
bkeepers
PRO
425
64k
Building Better People: How to give real-time feedback that sticks.
wjessup
359
18k
Bash Introduction
62gerente
608
210k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.9k
Building Applications with DynamoDB
mza
89
5.9k
What's in a price? How to price your products and services
michaelherold
242
11k
We Have a Design System, Now What?
morganepeng
48
7.1k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.2k
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