🧠 Python Concept That Hooks Attribute Definition: __set_name__ vs Descriptors Naming Wait… how does a descriptor know its attribute name? 👀 class User: age = Field() How does Field know it’s called "age"? 🤯 🧪 The Hook: __set_name__ class Field: def __set_name__(self, owner, name): self.name = name def __get__(self, instance, owner): return instance.__dict__.get(self.name) def __set__(self, instance, value): instance.__dict__[self.name] = value Now descriptors auto-know their field name 🎯 🧒 Simple Explanation Teacher gives each student a badge 🏷️ “Your name is Asha.” Descriptor gets its badge when class is created. 💡 Why This Is Powerful ✔ ORM fields ✔ Validation systems ✔ Framework internals ✔ Reusable descriptors ✔ Clean DSL design ⚡ Real Uses 💻 Django model fields 💻 Dataclasses internals 💻 Pydantic fields 💻 Serialization libraries 🐍 In Python, attributes introduce themselves 🐍 __set_name__ lets descriptors learn their own name, the moment the class is created. #Python #PythonTips #PythonTricks #AdvancedPython #CleanCode #LearnPython #Programming #DeveloperLife #DailyCoding #100DaysOfCode
Python Descriptors: __set_name__ Hook Explained
More Relevant Posts
-
Logic in Python – Understanding and, or, and not! 🔗🐍 Programs aren’t just about calculations—they need to make decisions. That’s where logical operators come in. They let us combine multiple conditions and control the flow of our code. This session was all about mastering the three core logical operators in Python: and, or, and not. Here’s what I learned: --- 🔹 The and Operator · Returns True only if both operands are True. · Otherwise, it returns False. A and B True + True = True True + False = False False + True = False False + False = False ```python print((2 < 3) and (1 < 2)) # True and True → True print((5 > 3) and (2 > 5)) # True and False → False ``` --- 🔹 The or Operator · Returns True if at least one operand is True. · Only False if both are False. A B A or B True + True = True True + False = True False + True = True False + False = False ```python print(True or False) # True print(False or False) # False ``` --- 🔹 The not Operator · Reverses the boolean value. · not True → False · not False → True ```python print(not True) # False print(not False) # True ``` --- ✅ Key Takeaways: · Logical operators work with boolean values and return booleans. · and → all must be true · or → at least one true · not → flips the truth value · You can combine them with relational operators to build complex conditions. --- 💬 Let’s Discuss: Have you ever used and/or in a real project? What’s the most creative condition you’ve built with them? Drop your examples below! 👇 --- 🔖 #Python #LogicalOperators #CodingBasics #LearnToCode #ProgrammingLogic #NXTWave #TechJourney
To view or add a comment, sign in
-
𝗦𝘁𝗼𝗽 𝗪𝗿𝗶𝘁𝗶𝗻𝗴 𝗣𝘆𝘁𝗵𝗼𝗻 𝗟𝗶𝗸𝗲 𝗮 𝗕𝗲𝗴𝗶𝗻𝗻𝗲𝗿 — 𝗗𝗼 𝗧𝗵𝗶𝘀 𝗜𝗻𝘀𝘁𝗲𝗮𝗱 I see this in code frequently. 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀 𝘄𝗵𝗼 𝗸𝗻𝗼𝘄 𝗣𝘆𝘁𝗵𝗼𝗻 𝗯𝘂𝘁 𝗮𝗿𝗲𝗻'𝘁 𝘄𝗿𝗶𝘁𝗶𝗻𝗴 𝗣𝘆𝘁𝗵𝗼𝗻𝗶𝗰 𝗰𝗼𝗱𝗲. There's a difference between code that works and code that belongs in Python. Look at the two examples in the image. 𝗦𝗮𝗺𝗲 𝗼𝘂𝘁𝗽𝘂𝘁. 𝗕𝘂𝘁 𝗼𝗻𝗲 𝗿𝗲𝗮𝗱𝘀 𝗹𝗶𝗸𝗲 𝗮 𝘁𝗿𝗮𝗻𝘀𝗹𝗮𝘁𝗲𝗱 𝗖 𝗽𝗿𝗼𝗴𝗿𝗮𝗺. The other reads like Python. Here are the patterns I see developers overuse and what to do instead: ❌ Manual index loops → ✅ enumerate() ❌ Building lists with .append() in loops → ✅ list comprehensions ❌ Checking "if len(x) > 0" → ✅ just "if x" ❌ Manual min/max logic → ✅ built-in min(), max() with key= ❌ Catching bare Exception → ✅ catch specific exceptions 𝗡𝗼𝗻𝗲 𝗼𝗳 𝘁𝗵𝗲𝘀𝗲 𝗮𝗿𝗲 𝗮𝗱𝘃𝗮𝗻𝗰𝗲𝗱 𝗣𝘆𝘁𝗵𝗼𝗻. They're just Python being Python. When I started, I wrote Python like I was still thinking in C. It took real project work like building actual APIs and handling real data before these patterns became instinct. The shift happens when you stop learning syntax and start reading great Python code written by others. 𝗪𝗵𝗶𝗰𝗵 𝗼𝗳 𝘁𝗵𝗲𝘀𝗲 '𝗯𝗲𝗴𝗶𝗻𝗻𝗲𝗿 𝘁𝗿𝗮𝗽𝘀' 𝗱𝗶𝗱 𝘆𝗼𝘂 𝗳𝗮𝗹𝗹 𝗶𝗻𝘁𝗼 𝘁𝗵𝗲 𝗹𝗼𝗻𝗴𝗲𝘀𝘁 𝗯𝗲𝗳𝗼𝗿𝗲 𝗳𝗶𝗻𝗮𝗹𝗹𝘆 𝗯𝗿𝗲𝗮𝗸𝗶𝗻𝗴 𝘁𝗵𝗲 𝗵𝗮𝗯𝗶𝘁? #Python #PythonTips #CleanCode #BackendDevelopment #LearnPython #SoftwareEngineering
To view or add a comment, sign in
-
-
🧠 Python Concept: dict.get() vs Direct Access Accessing dictionary values safely. ❌ Direct Access student = {"name": "Asha", "age": 20} print(student["grade"]) Output KeyError: 'grade' If the key doesn’t exist, Python throws an error. ✅ Using dict.get() student = {"name": "Asha", "age": 20} print(student.get("grade")) Output None No crash. No error. ⚡ Provide a Default Value student = {"name": "Asha", "age": 20} print(student.get("grade", "Not Available")) Output Not Available 🧒 Simple Explanation 📚 Imagine asking a librarian for a book 📚 Direct access →Imagine if the book isn't there, they shout an error 😅 📚 get() → They calmly say “Not available.” 💡 Why This Matters ✔ Prevents crashes ✔ Cleaner error handling ✔ Safer dictionary access ✔ Very common in real projects 🐍 Small Python features often prevent big problems 🐍 dict.get() helps you safely access dictionary values without crashing your program. #Python #PythonTips #PythonTricks #AdvancedPython #CleanCode #LearnPython #Programming #DeveloperLife #DailyCoding #100DaysOfCode
To view or add a comment, sign in
-
-
🧠 Python Concept: zip() — Iterate Multiple Lists Together Stop using messy index loops 😵💫 ❌ Traditional Way names = ["Alice", "Bob", "Charlie"] scores = [85, 90, 95] for i in range(len(names)): print(names[i], scores[i]) ✅ Pythonic Way names = ["Alice", "Bob", "Charlie"] scores = [85, 90, 95] for name, score in zip(names, scores): print(name, score) 🧒 Simple Explanation Think of zip() like a zipper 🤐 ➡️ It joins multiple lists together ➡️ Pairs items one by one Example: ("Alice", 85), ("Bob", 90), ("Charlie", 95) 💡 Why This Matters ✔ Cleaner and readable code ✔ No index errors ✔ Works with multiple lists ✔ Very common in real-world data handling ⚡ Bonus Tip Unzip values: pairs = [("Alice", 85), ("Bob", 90)] names, scores = zip(*pairs) print(names) print(scores) 🐍 Python makes parallel iteration simple 🐍 Use zip() to write smarter loops #Python #PythonTips #CleanCode #LearnPython #Programming #DeveloperLife #100DaysOfCode
To view or add a comment, sign in
-
-
Stop writing try/finally blocks. Use context managers instead. I see this pattern everywhere in Python codebases: connection = get_db_connection() try: result = connection.execute(query) finally: connection.close() Nothing wrong with it — until you have 15 resources to manage across your project. Here's the cleaner version with contextlib: from contextlib import contextmanager @contextmanager def db_connection(): conn = get_db_connection() try: yield conn finally: conn.close() with db_connection() as conn: result = conn.execute(query) Why this is better: → Resource cleanup logic lives in ONE place → You can't forget to close — it's automatic → Stack multiple with a single `with` statement → Works with async too (`@asynccontextmanager`) My favorite use case: temporary environment changes in tests. @contextmanager def override_settings(**kwargs): old = {k: getattr(settings, k) for k in kwargs} for k, v in kwargs.items(): setattr(settings, k, v) try: yield finally: for k, v in old.items(): setattr(settings, k, v) Small abstraction. Massive reduction in bugs. What's your favorite Python pattern that most people underuse? 👇 #Python #Programming #BackendDevelopment #SoftwareEngineering #CleanCode
To view or add a comment, sign in
-
You’re probably writing more Python code than you need to. Small tricks can make your code cleaner, faster, and easier to read which AI might also miss if not prompted well. I came across a collection of 100 Python tips that covers both basics and practical patterns 1] Cleaner syntax • List, set, and dictionary comprehensions for concise code • Swapping variables and unpacking in a single line Less code, same logic. 2] Built-in power • Modules like collections, itertools, datetime • Functions like enumerate, zip, sorted Python already gives you most of what you need. 3] Writing efficient code • Generators vs list comprehensions (memory vs speed tradeoff) • Using built-ins instead of manual loops Efficiency often comes from using the right abstraction. 4] Working with real tasks • File handling, PDFs, screenshots, web automation • Data handling with pandas 5] Debugging and readability • Assertions for early error detection • Zen of Python principles Good code is easy to understand. Python is simple. But writing clean Python is a skill. #python #programming #developer #coding #softwareengineering
To view or add a comment, sign in
-
🚀 The Python Speed Stack 1. Optimize the Logic (The "Low Hanging Fruit") Before switching engines, check your oil. Built-ins: Use map(), filter(), and list comprehensions. They run at C-speed under the hood. Vectorization: If you are doing math in a for loop, you’re doing it wrong. Use NumPy or Pandas to push calculations into optimized C arrays. 2. The CPython Shortcuts Slots: Use __slots__ in your classes to prevent the creation of __dict__, saving memory and speeding up attribute access. Memshells: Use lru_cache from functools to avoid re-calculating expensive functions. 3. Change the Runtime If CPython is the bottleneck, swap the engine: PyPy: A JIT (Just-In-Time) compiler that can make long-running programs 5x–10x faster without changing a single line of code. Cython: Explicitly declare C types in your Python code. It compiles your .py into a C extension, giving you C-level performance while keeping Python syntax. 4. Parallelism vs. Concurrency I/O Bound? Use asyncio. It handles thousands of connections without the overhead of threads. CPU Bound? Use multiprocessing to bypass the GIL (Global Interpreter Lock) and utilize every core on your machine. 💡 The Golden Rule: Profile First Don't guess where the bottleneck is. Use cProfile or line_profiler to find the exact line slowing you down. Optimization without profiling is just organized guessing. What’s your go-to trick for speeding up a sluggish Python script? Let’s talk in the comments! 👇 #Python #SoftwareEngineering #Cython #ProgrammingTips #BackendDevelopment #DataScience #PerformanceOptimization #CodingLife
To view or add a comment, sign in
-
🧠 Python Concept: f-strings (Formatted Strings) Stop using messy string formatting 😵💫 ❌ Traditional Way name = "Alice" age = 25 print("My name is " + name + " and I am " + str(age) + " years old") ❌ Old Formatting Way print("My name is {} and I am {} years old".format(name, age)) ✅ Pythonic Way (f-string) name = "Alice" age = 25 print(f"My name is {name} and I am {age} years old") 🧒 Simple Explanation Think of f-strings like a template 🧾 ➡️ Write normal text ➡️ Insert variables directly {} ➡️ Python fills it automatically 💡 Why This Matters ✔ Super readable ✔ Cleaner than + and .format() ✔ Faster performance ✔ Widely used in real-world apps ⚡ Bonus Example price = 99.456 print(f"Price: {price:.2f}") 👉 Output: Price: 99.46 🐍 Write strings like a pro 🐍 Keep your code clean & readable #Python #PythonTips #CleanCode #LearnPython #Programming #DeveloperLife #100DaysOfCode
To view or add a comment, sign in
-
-
🚀 Day 7/60 – Functions in Python (Write Reusable Code Like a Pro) Imagine writing the same code 10 times… ❌ Now imagine writing it once and reusing it… ✅ That’s the power of functions 👇 🧠 What is a Function? A function is a block of code that runs when you call it. 🔹 Basic Function def greet(): print("Hello, World!") Call it: greet() 🔹 Function with Parameters def greet(name): print("Hello", name) greet("Adeel") 🔹 Return Values (Very Important) def add(a, b): return a + b result = add(5, 3) print(result) # 8 ⚡ Real Example def is_even(num): return num % 2 == 0 print(is_even(4)) # True ❌ Common Mistake def greet() print("Hello") # ❌ Missing colon Correct: def greet(): print("Hello") # ✅ 🔥 Pro Tip Functions make your code: ✅ Reusable ✅ Clean ✅ Easy to debug 🔥 Challenge for today Write a function: 👉 Takes a number 👉 Returns square of that number Example: Input: 4 → Output: 16 Comment “DONE” when you solve it ✅ Follow Adeel Sajjad if you’re serious about mastering Python 🚀 #Python #LearnPython #PythonProgramming #Coding #Programming
To view or add a comment, sign in
-
-
Python TIP : filter() vs List Comprehension After working with Python in production systems for years, one thing I’ve noticed is how often we need to filter data efficiently.... especially in backend services and data pipelines. A simple example: filter(lambda amount: amount > 800, transactions) What this does: • Iterates through each item • Applies the condition (amount > 800) • Returns only the matching values Example output: [900, 1300, 2200] My take after using this in real projects: • filter() is concise and works well in functional-style pipelines • It’s useful when chaining transformations (especially with map()) • That said, in many production codebases, I still prefer list comprehensions for readability Equivalent using list comprehension: [amount for amount in transactions if amount > 800] Why this matters: • Readability often beats cleverness in team environments • Consistency across the codebase is more important than personal preference • Choosing the right approach depends on context, not just syntax One quick reminder: filter() returns an iterator, so wrap it with list() if needed. After years of writing and reviewing code, I lean toward clarity first, but it’s always good to know both approaches. #Python #Programming #SoftwareDevelopment #Coding #Developer #PythonTips
To view or add a comment, sign in
Explore related topics
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development