Title: Python Metaprogramming (Learning Path) – Real Python
Open Graph Title: Python Metaprogramming (Learning Path) – Real Python
Description: Learn Python metaprogramming with descriptors, metaclasses, ABCs, and protocols. Inspect objects at runtime and run code your program writes itself.
Open Graph Description: Learn Python metaprogramming with descriptors, metaclasses, ABCs, and protocols. Inspect objects at runtime and run code your program writes itself.
Opengraph URL: https://realpython.com/learning-paths/metaprogramming-in-python/
X: @realpython
Domain: realpython.com
{
"@context": "https://schema.org",
"@type": "ItemList",
"@id": "https://realpython.com/learning-paths/metaprogramming-in-python/",
"url": "https://realpython.com/learning-paths/metaprogramming-in-python/",
"name": "Python Metaprogramming",
"description": "Learn Python metaprogramming with descriptors, metaclasses, ABCs, and protocols. Inspect objects at runtime and run code your program writes itself.",
"itemListOrder": "ItemListOrderAscending",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "Course",
"@id": "https://realpython.com/courses/python-descriptors/",
"url": "https://realpython.com/courses/python-descriptors/",
"name": "Python Descriptors",
"description": "Learn what Python descriptors are, how the descriptor protocol works, and when descriptors are useful\u2014with practical, hands-on examples.",
"provider": {
"@type": "Organization",
"@id": "https://realpython.com/#organization",
"name": "Real Python",
"url": "https://realpython.com",
"logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT136M18S"
},
"offers": [
{
"@type": "Offer",
"category": "Subscription"
}
]
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "Course",
"@id": "https://realpython.com/courses/python-metaclasses/",
"url": "https://realpython.com/courses/python-metaclasses/",
"name": "Metaclasses in Python",
"description": "Metaclasses are an important but mysterious behind-the-scenes mechanism for instantiating classes in Python. In this video course, you'll learn how Python's metaclasses work in object-oriented programming.",
"provider": {
"@type": "Organization",
"@id": "https://realpython.com/#organization",
"name": "Real Python",
"url": "https://realpython.com",
"logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT161M27S"
},
"offers": [
{
"@type": "Offer",
"category": "Subscription"
}
]
}
},
{
"@type": "ListItem",
"position": 3,
"item": {
"@type": "Course",
"@id": "https://realpython.com/courses/duck-typing-python/",
"url": "https://realpython.com/courses/duck-typing-python/",
"name": "Getting to Know Duck Typing in Python",
"description": "Learn about duck typing in Python---a type system based on an object's behavior rather than inheritance. By taking advantage of duck typing, you can create flexible and decoupled sets of Python classes that work together or independently.",
"provider": {
"@type": "Organization",
"@id": "https://realpython.com/#organization",
"name": "Real Python",
"url": "https://realpython.com",
"logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT118M42S"
},
"offers": [
{
"@type": "Offer",
"category": "Subscription"
}
]
}
},
{
"@type": "ListItem",
"position": 4,
"item": {
"@type": "Course",
"@id": "https://realpython.com/courses/interfaces-object-oriented-design-principles/",
"url": "https://realpython.com/courses/interfaces-object-oriented-design-principles/",
"name": "Python Interfaces: Object-Oriented Design Principles",
"description": "In this video course, you'll explore how to use a Python interface. You'll come to understand why interfaces are so useful and learn how to implement formal and informal interfaces in Python. You'll also examine the differences between Python interfaces and those in other programming languages.",
"provider": {
"@type": "Organization",
"@id": "https://realpython.com/#organization",
"name": "Real Python",
"url": "https://realpython.com",
"logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT124M52S"
},
"offers": [
{
"@type": "Offer",
"category": "Subscription"
}
]
}
},
{
"@type": "ListItem",
"position": 5,
"item": {
"@type": "Course",
"@id": "https://realpython.com/courses/exploring-protocols-python/",
"url": "https://realpython.com/courses/exploring-protocols-python/",
"name": "Exploring Protocols in Python",
"description": "Learn how Python's protocols improve your use of type hints and static type checkers in this practical video course.",
"provider": {
"@type": "Organization",
"@id": "https://realpython.com/#organization",
"name": "Real Python",
"url": "https://realpython.com",
"logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT148M41S"
},
"offers": [
{
"@type": "Offer",
"category": "Subscription"
}
]
}
},
{
"@type": "ListItem",
"position": 6,
"item": {
"@type": "Course",
"@id": "https://realpython.com/courses/working-dict-attributes/",
"url": "https://realpython.com/courses/working-dict-attributes/",
"name": "Working With Python's .__dict__ Attribute",
"description": "Explore Python's .__dict__ attribute to manage class and instance attributes directly for more flexible, low-level control of your objects.",
"provider": {
"@type": "Organization",
"@id": "https://realpython.com/#organization",
"name": "Real Python",
"url": "https://realpython.com",
"logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT70M59S"
},
"offers": [
{
"@type": "Offer",
"category": "Subscription"
}
]
}
},
{
"@type": "ListItem",
"position": 7,
"item": {
"@type": "Course",
"@id": "https://realpython.com/courses/evaluate-expressions-dynamically-python-eval/",
"url": "https://realpython.com/courses/evaluate-expressions-dynamically-python-eval/",
"name": "Evaluate Expressions Dynamically With Python eval()",
"description": "Learn how Python's eval() works and how to use it effectively in your programs. Additionally, you'll learn how to minimize the security risks associated to the use of eval().",
"provider": {
"@type": "Organization",
"@id": "https://realpython.com/#organization",
"name": "Real Python",
"url": "https://realpython.com",
"logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT106M47S"
},
"offers": [
{
"@type": "Offer",
"category": "Subscription"
}
]
}
}
]
}
| author | Real Python |
| theme-color | #18354c |
| color-scheme | light dark |
| twitter:card | summary_large_image |
| twitter:image | https://files.realpython.com/media/pcl-Python-Metaclasses_Watermarked.b922afb174f8.jpg |
| og:image | https://files.realpython.com/media/pcl-Python-Metaclasses_Watermarked.b922afb174f8.jpg |
| twitter:creator | @realpython |
| og:type | article |
| og:site_name | Real Python |
| apple-mobile-web-app-title | Real Python |
Links:
Viewport: width=device-width, initial-scale=1, shrink-to-fit=no, viewport-fit=cover
Robots: max-image-preview:large