SlideShare a Scribd company logo
Descriptors
  jss 2011-07-07
What can you do
inside a class suite?
@c_decorator1
              @c_decorator0(foo=23)
              class Foo(object):
                  __metaclass__ = MetaClass
                  wenglo = 0
                  garply, corge = mktuple(qux)
                  @staticmethod
                  def fred(): pass
                  def __new__(klass): pass

All In One:       @classmethod
                  def wilma(klass): pass
                  def __init__(self, *_): pass
                  @f_decorator
                  def foo(self, *_): pass
                  @property
                  def bar(self): pass
                  @bar.setter
                  def set_bar(self, v): pass
                  helga = Descriptor()
                  print locals()
@c_decorator1
              @c_decorator0(foo=23)
              class Foo(object):
                  __metaclass__ = MetaClass
                  wenglo = 0
                  garply, corge = mktuple(qux)
                  @staticmethod
                  def fred(): pass
                  def __new__(klass): pass

All In One:       @classmethod
                  def wilma(klass): pass
                  def __init__(self, *_): pass
                  @f_decorator
                  def foo(self, *_): pass
                  @property
                  def bar(self): pass
                  @bar.setter
                  def set_bar(self, v): pass
                  helga = Descriptor()
                  print locals()
Descriptor Protocol

•   Descriptors are customized Object Attributes

•   An object with any of these defined is a descriptor:

     __get__(self, obj, type=None)

     __set__(self, obj, val)

     __delete__(self, obj)
Generic Descriptor Examples

class Foo(object):

    def wenglo(self):      f = Foo()
        return self.qux    f.wenglo()
    @classmethod           Foo.foo()
    def foo(klass):        Foo.wenglo()
        return klass.bar
    @staticmethod
      def buz():
          return 42
“Normal” attribute access

class Foo(object): pass

f = Foo()

f.bla

# implemented in object.__getattribute__:

== type(f).__dict__[‘bla’].__get__(f, type(f))
Demo


         show some code:

check out ListProperty in postamt.py
Implementing property()
# by Raymond Hettinger: http://users.rcn.com/python/download/Descriptor.htm
class property(object):
    def __init__(self, fget=None, fset=None, fdel=None, doc=None):
        self.fget = fget
        self.fset = fset
        self.fdel = fdel
        self.__doc__ = doc

    def __get__(self, obj, objtype=None):
        if obj is None:
            return self
        if self.fget is None:
            raise AttributeError, "unreadable attribute"
        return self.fget(obj)

    def __set__(self, obj, value):
        if self.fset is None:
            raise AttributeError, "can't set attribute"
        self.fset(obj, value)

    def __delete__(self, obj):
        if self.fdel is None:
            raise AttributeError, "can't delete attribute"
        self.fdel(obj)

More Related Content

What's hot

Python Metaclasses
Python MetaclassesPython Metaclasses
Python Metaclasses
Kisitu Augustine
 
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM LanguageCodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest
 
ECMA 入门
ECMA 入门ECMA 入门
ECMA 入门
chencheng 云谦
 
Testing for share
Testing for share Testing for share
Testing for share
Rajeev Mehta
 
Advanced python
Advanced pythonAdvanced python
Advanced python
EU Edge
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Python
kwatch
 
ddd+scala
ddd+scaladdd+scala
ddd+scala
潤一 加藤
 
20170113 julia’s type system and multiple dispatch
20170113 julia’s type system and multiple dispatch20170113 julia’s type system and multiple dispatch
20170113 julia’s type system and multiple dispatch
岳華 杜
 
Namespaces
NamespacesNamespaces
Namespaces
zindadili
 
Declarative Data Modeling in Python
Declarative Data Modeling in PythonDeclarative Data Modeling in Python
Declarative Data Modeling in Python
Joshua Forman
 
JavaScript for PHP developers
JavaScript for PHP developersJavaScript for PHP developers
JavaScript for PHP developers
Stoyan Stefanov
 
Python decorators
Python decoratorsPython decorators
Python decorators
Alex Su
 
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Samuel Fortier-Galarneau
 
Decorators in Python
Decorators in PythonDecorators in Python
Decorators in Python
Ben James
 
Python classes objects
Python classes objectsPython classes objects
Swift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extensionSwift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extension
Kwang Woo NAM
 
Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!
Kel Cecil
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
Dmitry Sheiko
 
Mirror, mirror on the wall - Building a new PHP reflection library (Nomad PHP...
Mirror, mirror on the wall - Building a new PHP reflection library (Nomad PHP...Mirror, mirror on the wall - Building a new PHP reflection library (Nomad PHP...
Mirror, mirror on the wall - Building a new PHP reflection library (Nomad PHP...
James Titcumb
 
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
hwilming
 

What's hot (20)

Python Metaclasses
Python MetaclassesPython Metaclasses
Python Metaclasses
 
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM LanguageCodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
 
ECMA 入门
ECMA 入门ECMA 入门
ECMA 入门
 
Testing for share
Testing for share Testing for share
Testing for share
 
Advanced python
Advanced pythonAdvanced python
Advanced python
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Python
 
ddd+scala
ddd+scaladdd+scala
ddd+scala
 
20170113 julia’s type system and multiple dispatch
20170113 julia’s type system and multiple dispatch20170113 julia’s type system and multiple dispatch
20170113 julia’s type system and multiple dispatch
 
Namespaces
NamespacesNamespaces
Namespaces
 
Declarative Data Modeling in Python
Declarative Data Modeling in PythonDeclarative Data Modeling in Python
Declarative Data Modeling in Python
 
JavaScript for PHP developers
JavaScript for PHP developersJavaScript for PHP developers
JavaScript for PHP developers
 
Python decorators
Python decoratorsPython decorators
Python decorators
 
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
 
Decorators in Python
Decorators in PythonDecorators in Python
Decorators in Python
 
Python classes objects
Python classes objectsPython classes objects
Python classes objects
 
Swift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extensionSwift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extension
 
Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
Mirror, mirror on the wall - Building a new PHP reflection library (Nomad PHP...
Mirror, mirror on the wall - Building a new PHP reflection library (Nomad PHP...Mirror, mirror on the wall - Building a new PHP reflection library (Nomad PHP...
Mirror, mirror on the wall - Building a new PHP reflection library (Nomad PHP...
 
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
 

Viewers also liked

Monaqasat.com ArabNET presentation
Monaqasat.com ArabNET presentationMonaqasat.com ArabNET presentation
Monaqasat.com ArabNET presentation
Monaqasat.com
 
Rest breaks
Rest breaksRest breaks
Rest breaks
Sheila A
 
How long is the working week
How long is the working weekHow long is the working week
How long is the working week
Sheila A
 
Ejercicio2.carlos lozano
Ejercicio2.carlos lozanoEjercicio2.carlos lozano
Ejercicio2.carlos lozano
Carlos Lozano
 
Missd
MissdMissd
Missd
Melanie B
 
Proyecto de vida
Proyecto de vidaProyecto de vida
Proyecto de vida
Christian CJ
 
cvnophotoA
cvnophotoAcvnophotoA
cvnophotoA
ali albayati
 
Preguntas deider
Preguntas deiderPreguntas deider
Preguntas deider
alexander rodriguez
 
Geografia
GeografiaGeografia
Geografia
980526
 
La Pugliese | Analisis territorial
La Pugliese | Analisis territorialLa Pugliese | Analisis territorial
La Pugliese | Analisis territorial
Dr_cristiang
 
Ejemplo de estudio de mercado
Ejemplo de estudio de mercadoEjemplo de estudio de mercado
Ejemplo de estudio de mercado
Washington Escobar
 
ตัวอย่างชิ้นงาน P5 2-58
ตัวอย่างชิ้นงาน P5 2-58ตัวอย่างชิ้นงาน P5 2-58
ตัวอย่างชิ้นงาน P5 2-58
NööNuy Nãtchåwàkôrn
 
Ideologías políticas
Ideologías políticasIdeologías políticas
Ideologías políticas
anahi anahikb
 
Expo1 adm finac-p
Expo1 adm finac-pExpo1 adm finac-p
Expo1 adm finac-p
Paola Cruz
 
STANDARD FOR FABRICS (SUITING) PER SNI
STANDARD FOR FABRICS (SUITING) PER SNISTANDARD FOR FABRICS (SUITING) PER SNI
STANDARD FOR FABRICS (SUITING) PER SNI
roellys
 
Textile fabrics analysis
Textile fabrics analysisTextile fabrics analysis
Textile fabrics analysis
roellys
 
be proud to be an indian on independance day VRVP
be proud to be an indian on independance day VRVPbe proud to be an indian on independance day VRVP
be proud to be an indian on independance day VRVP
NiranjanPShankar
 
ForbushSchoolResumeandcv
ForbushSchoolResumeandcvForbushSchoolResumeandcv
ForbushSchoolResumeandcv
Renee Cornish
 
101910 open letter_to_news_media
101910 open letter_to_news_media101910 open letter_to_news_media
101910 open letter_to_news_media
gorin2008
 
Smart phones final
Smart phones finalSmart phones final
Smart phones final
mabd32
 

Viewers also liked (20)

Monaqasat.com ArabNET presentation
Monaqasat.com ArabNET presentationMonaqasat.com ArabNET presentation
Monaqasat.com ArabNET presentation
 
Rest breaks
Rest breaksRest breaks
Rest breaks
 
How long is the working week
How long is the working weekHow long is the working week
How long is the working week
 
Ejercicio2.carlos lozano
Ejercicio2.carlos lozanoEjercicio2.carlos lozano
Ejercicio2.carlos lozano
 
Missd
MissdMissd
Missd
 
Proyecto de vida
Proyecto de vidaProyecto de vida
Proyecto de vida
 
cvnophotoA
cvnophotoAcvnophotoA
cvnophotoA
 
Preguntas deider
Preguntas deiderPreguntas deider
Preguntas deider
 
Geografia
GeografiaGeografia
Geografia
 
La Pugliese | Analisis territorial
La Pugliese | Analisis territorialLa Pugliese | Analisis territorial
La Pugliese | Analisis territorial
 
Ejemplo de estudio de mercado
Ejemplo de estudio de mercadoEjemplo de estudio de mercado
Ejemplo de estudio de mercado
 
ตัวอย่างชิ้นงาน P5 2-58
ตัวอย่างชิ้นงาน P5 2-58ตัวอย่างชิ้นงาน P5 2-58
ตัวอย่างชิ้นงาน P5 2-58
 
Ideologías políticas
Ideologías políticasIdeologías políticas
Ideologías políticas
 
Expo1 adm finac-p
Expo1 adm finac-pExpo1 adm finac-p
Expo1 adm finac-p
 
STANDARD FOR FABRICS (SUITING) PER SNI
STANDARD FOR FABRICS (SUITING) PER SNISTANDARD FOR FABRICS (SUITING) PER SNI
STANDARD FOR FABRICS (SUITING) PER SNI
 
Textile fabrics analysis
Textile fabrics analysisTextile fabrics analysis
Textile fabrics analysis
 
be proud to be an indian on independance day VRVP
be proud to be an indian on independance day VRVPbe proud to be an indian on independance day VRVP
be proud to be an indian on independance day VRVP
 
ForbushSchoolResumeandcv
ForbushSchoolResumeandcvForbushSchoolResumeandcv
ForbushSchoolResumeandcv
 
101910 open letter_to_news_media
101910 open letter_to_news_media101910 open letter_to_news_media
101910 open letter_to_news_media
 
Smart phones final
Smart phones finalSmart phones final
Smart phones final
 

Similar to Descriptor Protocol

DjangoCon US 2011 - Monkeying around at New Relic
DjangoCon US 2011 - Monkeying around at New RelicDjangoCon US 2011 - Monkeying around at New Relic
DjangoCon US 2011 - Monkeying around at New Relic
Graham Dumpleton
 
Djangocon11: Monkeying around at New Relic
Djangocon11: Monkeying around at New RelicDjangocon11: Monkeying around at New Relic
Djangocon11: Monkeying around at New Relic
New Relic
 
Object Orientation vs Functional Programming in Python
Object Orientation vs Functional Programming in PythonObject Orientation vs Functional Programming in Python
Object Orientation vs Functional Programming in Python
Tendayi Mawushe
 
Pybelsberg — Constraint-based Programming in Python
Pybelsberg — Constraint-based Programming in PythonPybelsberg — Constraint-based Programming in Python
Pybelsberg — Constraint-based Programming in Python
Christoph Matthies
 
Python_Unit_2 OOPS.pptx
Python_Unit_2  OOPS.pptxPython_Unit_2  OOPS.pptx
Python_Unit_2 OOPS.pptx
ChhaviCoachingCenter
 
Python's magic methods
Python's magic methodsPython's magic methods
Python's magic methods
Reuven Lerner
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Fwdays
 
Object_Oriented_Programming_Unit3.pdf
Object_Oriented_Programming_Unit3.pdfObject_Oriented_Programming_Unit3.pdf
Object_Oriented_Programming_Unit3.pdf
Koteswari Kasireddy
 
Pyimproved again
Pyimproved againPyimproved again
Pyimproved again
rik0
 
Python decorators (中文)
Python decorators (中文)Python decorators (中文)
Python decorators (中文)
Yiwei Chen
 
Design of OO language
Design of OO languageDesign of OO language
Design of OO language
Georgiana T.
 
Dive into Python Class
Dive into Python ClassDive into Python Class
Dive into Python Class
Jim Yeh
 
Python magicmethods
Python magicmethodsPython magicmethods
Python magicmethods
dreampuf
 
Object Trampoline: Why having not the object you want is what you need.
Object Trampoline: Why having not the object you want is what you need.Object Trampoline: Why having not the object you want is what you need.
Object Trampoline: Why having not the object you want is what you need.
Workhorse Computing
 
用Tornado开发RESTful API运用
用Tornado开发RESTful API运用用Tornado开发RESTful API运用
用Tornado开发RESTful API运用
Felinx Lee
 
Introduction to php oop
Introduction to php oopIntroduction to php oop
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
UC San Diego
 
Python_Object_Oriented_Programming.pptx
Python_Object_Oriented_Programming.pptxPython_Object_Oriented_Programming.pptx
Python_Object_Oriented_Programming.pptx
Koteswari Kasireddy
 
Introduction to Python - Part Three
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Three
amiable_indian
 
Python Descriptors Demystified
Python Descriptors DemystifiedPython Descriptors Demystified
Python Descriptors Demystified
Chris Beaumont
 

Similar to Descriptor Protocol (20)

DjangoCon US 2011 - Monkeying around at New Relic
DjangoCon US 2011 - Monkeying around at New RelicDjangoCon US 2011 - Monkeying around at New Relic
DjangoCon US 2011 - Monkeying around at New Relic
 
Djangocon11: Monkeying around at New Relic
Djangocon11: Monkeying around at New RelicDjangocon11: Monkeying around at New Relic
Djangocon11: Monkeying around at New Relic
 
Object Orientation vs Functional Programming in Python
Object Orientation vs Functional Programming in PythonObject Orientation vs Functional Programming in Python
Object Orientation vs Functional Programming in Python
 
Pybelsberg — Constraint-based Programming in Python
Pybelsberg — Constraint-based Programming in PythonPybelsberg — Constraint-based Programming in Python
Pybelsberg — Constraint-based Programming in Python
 
Python_Unit_2 OOPS.pptx
Python_Unit_2  OOPS.pptxPython_Unit_2  OOPS.pptx
Python_Unit_2 OOPS.pptx
 
Python's magic methods
Python's magic methodsPython's magic methods
Python's magic methods
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Object_Oriented_Programming_Unit3.pdf
Object_Oriented_Programming_Unit3.pdfObject_Oriented_Programming_Unit3.pdf
Object_Oriented_Programming_Unit3.pdf
 
Pyimproved again
Pyimproved againPyimproved again
Pyimproved again
 
Python decorators (中文)
Python decorators (中文)Python decorators (中文)
Python decorators (中文)
 
Design of OO language
Design of OO languageDesign of OO language
Design of OO language
 
Dive into Python Class
Dive into Python ClassDive into Python Class
Dive into Python Class
 
Python magicmethods
Python magicmethodsPython magicmethods
Python magicmethods
 
Object Trampoline: Why having not the object you want is what you need.
Object Trampoline: Why having not the object you want is what you need.Object Trampoline: Why having not the object you want is what you need.
Object Trampoline: Why having not the object you want is what you need.
 
用Tornado开发RESTful API运用
用Tornado开发RESTful API运用用Tornado开发RESTful API运用
用Tornado开发RESTful API运用
 
Introduction to php oop
Introduction to php oopIntroduction to php oop
Introduction to php oop
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
Python_Object_Oriented_Programming.pptx
Python_Object_Oriented_Programming.pptxPython_Object_Oriented_Programming.pptx
Python_Object_Oriented_Programming.pptx
 
Introduction to Python - Part Three
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Three
 
Python Descriptors Demystified
Python Descriptors DemystifiedPython Descriptors Demystified
Python Descriptors Demystified
 

More from rocketcircus

Pytables
PytablesPytables
Pytables
rocketcircus
 
Descriptor Protocol
Descriptor ProtocolDescriptor Protocol
Descriptor Protocol
rocketcircus
 
Python Academy
Python AcademyPython Academy
Python Academy
rocketcircus
 
intro to scikits.learn
intro to scikits.learnintro to scikits.learn
intro to scikits.learn
rocketcircus
 
AWS Quick Intro
AWS Quick IntroAWS Quick Intro
AWS Quick Intro
rocketcircus
 
PyPy 1.5
PyPy 1.5PyPy 1.5
PyPy 1.5
rocketcircus
 
Message Queues
Message QueuesMessage Queues
Message Queues
rocketcircus
 
Rocket Circus on Code Review
Rocket Circus on Code ReviewRocket Circus on Code Review
Rocket Circus on Code Review
rocketcircus
 

More from rocketcircus (8)

Pytables
PytablesPytables
Pytables
 
Descriptor Protocol
Descriptor ProtocolDescriptor Protocol
Descriptor Protocol
 
Python Academy
Python AcademyPython Academy
Python Academy
 
intro to scikits.learn
intro to scikits.learnintro to scikits.learn
intro to scikits.learn
 
AWS Quick Intro
AWS Quick IntroAWS Quick Intro
AWS Quick Intro
 
PyPy 1.5
PyPy 1.5PyPy 1.5
PyPy 1.5
 
Message Queues
Message QueuesMessage Queues
Message Queues
 
Rocket Circus on Code Review
Rocket Circus on Code ReviewRocket Circus on Code Review
Rocket Circus on Code Review
 

Recently uploaded

HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 

Recently uploaded (20)

HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 

Descriptor Protocol

  • 1. Descriptors jss 2011-07-07
  • 2. What can you do inside a class suite?
  • 3. @c_decorator1 @c_decorator0(foo=23) class Foo(object): __metaclass__ = MetaClass wenglo = 0 garply, corge = mktuple(qux) @staticmethod def fred(): pass def __new__(klass): pass All In One: @classmethod def wilma(klass): pass def __init__(self, *_): pass @f_decorator def foo(self, *_): pass @property def bar(self): pass @bar.setter def set_bar(self, v): pass helga = Descriptor() print locals()
  • 4. @c_decorator1 @c_decorator0(foo=23) class Foo(object): __metaclass__ = MetaClass wenglo = 0 garply, corge = mktuple(qux) @staticmethod def fred(): pass def __new__(klass): pass All In One: @classmethod def wilma(klass): pass def __init__(self, *_): pass @f_decorator def foo(self, *_): pass @property def bar(self): pass @bar.setter def set_bar(self, v): pass helga = Descriptor() print locals()
  • 5. Descriptor Protocol • Descriptors are customized Object Attributes • An object with any of these defined is a descriptor: __get__(self, obj, type=None) __set__(self, obj, val) __delete__(self, obj)
  • 6. Generic Descriptor Examples class Foo(object): def wenglo(self): f = Foo() return self.qux f.wenglo() @classmethod Foo.foo() def foo(klass): Foo.wenglo() return klass.bar @staticmethod def buz(): return 42
  • 7. “Normal” attribute access class Foo(object): pass f = Foo() f.bla # implemented in object.__getattribute__: == type(f).__dict__[‘bla’].__get__(f, type(f))
  • 8. Demo show some code: check out ListProperty in postamt.py
  • 9. Implementing property() # by Raymond Hettinger: http://users.rcn.com/python/download/Descriptor.htm class property(object): def __init__(self, fget=None, fset=None, fdel=None, doc=None): self.fget = fget self.fset = fset self.fdel = fdel self.__doc__ = doc def __get__(self, obj, objtype=None): if obj is None: return self if self.fget is None: raise AttributeError, "unreadable attribute" return self.fget(obj) def __set__(self, obj, value): if self.fset is None: raise AttributeError, "can't set attribute" self.fset(obj, value) def __delete__(self, obj): if self.fdel is None: raise AttributeError, "can't delete attribute" self.fdel(obj)