kisituaugustine
1,121 views
28 slides
Oct 05, 2013
Slide 1 of 28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
About This Presentation
A talk i did at PyConZA 2013
Size: 112.1 KB
Language: en
Added: Oct 05, 2013
Slides: 28 pages
Slide Content
Python Meta Classes Kisitu Augustine Software Developer at ThoughtWorks Twitter: @austiine04 Github : austiine04
SOME BASICS
Everything is an object in python.
Classes create instances. Class Foo( object): def _ _ init _ _(self, bar ) : self.bar = bar f = Foo(‘Alex Bar’ )
type( f )
Creating new types
Class Foo( object): pass
Class Foo: pass
Foo = type( ‘Foo’ , (), {})
type( cls ,* args ,* * kwargs )
type() is actually not a function. It is a META CLASS.
A special kind of class that creates classes.
type(name, bases, cls_dct )
Class Foo ( object): def _ _ init _ _(self, bar ) : self.bar = bar At runtime class Foo is an instance of type
Defining a meta class class Meta(type): d ef _ _ init _ _( cls , name, bases, dict ): pass def _ _new_ _(meta, name, bases, dct ): pass def _ _call_ _ ( cls , * args , ** kwargs ): pass *remember to call super in each of method you override
_ _new_ _() vs _ _ init _ _()
class Foo(object): _ _ metaclass _ _ = Meta def _ _ init _ _(self): pass