🧠 Python Concept: __call__ (Make Objects Callable) Turn objects into functions 😳 ❌ Normal Class class Adder: def __init__(self, x): self.x = x a = Adder(10) # a(5) ❌ Error ✅ With __call__ class Adder: def __init__(self, x): self.x = x def __call__(self, y): return self.x + y a = Adder(10) print(a(5)) # 15 🧒 Simple Explanation 👉 __call__ lets you use object like a function ➡️ a(5) → actually calls __call__ 💡 Why This Matters ✔ Cleaner API design ✔ Useful in decorators ✔ Helps in functional patterns ✔ Advanced Python concept ⚡ Real-World Use ✨ Machine learning models (call like function) ✨ Middleware systems ✨ Callable configurations 🐍 Objects can act like functions 🐍 Python is flexible #Python #AdvancedPython #OOP #SoftwareEngineering #BackendDevelopment #Programming #DeveloperLife
Make Objects Callable with __call__ in Python
More Relevant Posts
-
🧠 Python Concept: collections.defaultdict Stop checking keys manually 😎 ❌ Without defaultdict data = {} for key in ["a", "b", "a"]: if key not in data: data[key] = [] data[key].append(key) print(data) 👉 Repeated key checking 👉 More code ✅ With defaultdict from collections import defaultdict data = defaultdict(list) for key in ["a", "b", "a"]: data[key].append(key) print(data) 🧒 Simple Explanation 👉 defaultdict gives a default value automatically ➡️ No need to check if key exists ➡️ Python handles it 💡 Why This Matters ✔ Cleaner code ✔ Less boilerplate ✔ Faster development ✔ Very common in real-world code ⚡ Bonus Example from collections import defaultdict count = defaultdict(int) for char in "hello": count[char] += 1 print(count) 🧠 Real-World Use ✨ Counting frequency ✨ Grouping data ✨ Building maps 🐍 Don’t check keys manually 🐍 Let Python handle defaults #Python #AdvancedPython #CleanCode #BackendDevelopment #SoftwareEngineering #Programming #DeveloperLife
To view or add a comment, sign in
-
-
🧠 Python Concept: contextlib (Custom Context Managers) Write your own with logic 😎 ❌ Without Context Manager file = open("data.txt", "w") try: file.write("Hello") finally: file.close() 👉 More boilerplate 👉 Easy to forget cleanup ✅ Pythonic Way (Custom Context Manager) from contextlib import contextmanager @contextmanager def open_file(name, mode): f = open(name, mode) try: yield f finally: f.close() with open_file("data.txt", "w") as f: f.write("Hello") 🧒 Simple Explanation Think of it like a helper 🤖 ➡️ Handles setup ➡️ Runs your code ➡️ Cleans up automatically 💡 Why This Matters ✔ Cleaner resource handling ✔ Avoid memory leaks ✔ Reusable logic ✔ Used in production systems ⚡ Real-World Use ✨ Database connections ✨ File handling ✨ API sessions ✨ Locks & threading 🐍 Don’t repeat try-finally 🐍 Automate cleanup smartly #Python #PythonTips #CleanCode #AdvancedPython #BackendDevelopment #Programming #DeveloperLife
To view or add a comment, sign in
-
-
🧠 Python Concept: __new__ vs __init__ Object creation vs initialization 😳 ❌ What most people think 👉 __init__ creates the object ✅ Reality class Demo: def __new__(cls): print("Creating instance") return super().__new__(cls) def __init__(self): print("Initializing instance") obj = Demo() 👉 Output: Creating instance Initializing instance 🧒 Simple Explanation 👉 __new__ → creates object 👉 __init__ → initializes object 💡 Why This Matters ✔ Used in immutable types ✔ Important for metaclasses ✔ Helps in advanced object control ✔ Asked in advanced interviews ⚡ Real-World Use ✨ Singleton pattern ✨ Custom object creation ✨ Immutable objects 🐍 Creation first, then initialization 🐍 Understand object lifecycle #Python #AdvancedPython #OOP #SoftwareEngineering #BackendDevelopment #Programming #DeveloperLife
To view or add a comment, sign in
-
-
Most Python classes I've seen in DS projects do too much! They load data, clean it, transform it, run the model, and log results... all in one place. It feels efficient until you need to change one thing and have to re-test everything else. That's the cost of ignoring the Single Responsibility Principle. 🐍 In my latest article, I break down what SRP actually means for Python data pipelines: https://lnkd.in/esKz_ARk This is post 1 of 5 in a series on SOLID principles applied to Data Science code. What's the messiest class you've inherited on a DS project? 👇 #Python #DataScience #SoftwareEngineering #SOLID #DataEngineering
To view or add a comment, sign in
-
🚀 Built a simple Python script to clean up my messy Downloads folder! We all download files daily, and things get cluttered fast. So I wrote a quick automation script using Python to organize files into folders like Images, Documents, Archives, etc. 💡 Here’s the code: ```python from pathlib import Path import shutil # Folder to organize source = Path("C:/Users/YourName/Downloads") # File type mapping folders = { ".jpg": "Images", ".png": "Images", ".pdf": "Documents", ".zip": "Archives", ".exe": "Installers" } for file in source.iterdir(): if file.is_file(): folder_name = folders.get(file.suffix.lower()) if folder_name: destination = source / folder_name destination.mkdir(exist_ok=True) shutil.move(str(file), destination / file.name) ``` ⚡ What it does: * Scans your Downloads folder * Detects file types * Creates folders automatically * Moves files to the right place Sometimes, small automations like this can save a lot of time and keep your system organized. #Python #Automation #Coding #Developers #Productivity #Backend
To view or add a comment, sign in
-
🐍 Day 21 of My 30-Day Python Learning Challenge Today I added a new feature to my Log File Analyzer Project — 📊 Data Visualization using Matplotlib 📌 Goal: Display the most frequent words as a chart. 📌 Code: import matplotlib.pyplot as plt words = ['python', 'data', 'code'] counts = [10, 7, 5] plt.bar(words, counts) plt.xlabel("Words") plt.ylabel("Frequency") plt.title("Top Word Frequencies") plt.show() 📌 Output: A bar chart showing most frequent words 💡 Why this matters? Visualization helps: • Understand data quickly • Present insights clearly • Improve project quality 📊 Quick Question Which function is used to create a bar chart? A) plot() B) bar() C) show() D) title() Answer tomorrow 👇 #Python #DataVisualization #MiniProject #LearningInPublic #SoftwareDeveloper
To view or add a comment, sign in
-
Technical post: I've been posting some graphs on here, talking about functions and "equivalence". This was all started by working on porting an MLOPs framework from python 3.10 to 3.12, and all the "dependency hell" one has to go through. Then naturally the question arose "What are the boundaries of one project to another, in terms of functions being called etc.,?" This led me down the rabbit hole (not too deep) of what happens when I do something like python -m <module> <somescript>. Specifically, what is a "no op" module, and what kind of ops can we inject, thanks to python being an interpreted language. A few years ago I'd worked on something along similar lines called TracePath, which provided a decorator to do something similar (e.g. who called who, how long it took, etc.). So I merged these two ideas (avoid decorating every function, have an "inspector" module) and ran this on a simple pandas dataframe creation. The resulting function invocation graph is the image attached to this post. When I ran it across the whole workflow (create, load, transform data etc.,), the graph had ~9000 connections. The nice thing is I can specify which modules (e.g. only pandas, or pandas and numpy) should be added to the graph etc. What do you think is the next logical thing to do with something like this? What kind of graphs would well structured software produce? How about badly written software? #graphs #swe #dependencyhell #python
To view or add a comment, sign in
-
-
There is something very powerful in Python that you can unlock by implementing just 2 methods. __𝙡𝙚𝙣__ __𝙜𝙚𝙩𝙞𝙩𝙚𝙢__ For example, if you implement this: 𝗰𝗹𝗮𝘀𝘀 𝗗𝗲𝗰𝗸: 𝗱𝗲𝗳 __𝗶𝗻𝗶𝘁__(𝘀𝗲𝗹𝗳, 𝗰𝗮𝗿𝗱𝘀): 𝘀𝗲𝗹𝗳.𝗰𝗮𝗿𝗱𝘀 = 𝗰𝗮𝗿𝗱𝘀 𝗱𝗲𝗳 __𝗹𝗲𝗻__(𝘀𝗲𝗹𝗳): 𝗿𝗲𝘁𝘂𝗿𝗻 𝗹𝗲𝗻(𝘀𝗲𝗹𝗳.𝗰𝗮𝗿𝗱𝘀) 𝗱𝗲𝗳 __𝗴𝗲𝘁𝗶𝘁𝗲𝗺__(𝘀𝗲𝗹𝗳, 𝗽𝗼𝘀𝗶𝘁𝗶𝗼𝗻): 𝗿𝗲𝘁𝘂𝗿𝗻 𝘀𝗲𝗹𝗳.𝗰𝗮𝗿𝗱𝘀[𝗽𝗼𝘀𝗶𝘁𝗶𝗼𝗻] Your object automatically supports: • 𝗹𝗲𝗻(𝘥𝘦𝘤𝘬) • 𝘥𝘦𝘤𝘬[0] • slicing → 𝘥𝘦𝘤𝘬[:3] • iteration → 𝗳𝗼𝗿 𝘤𝘢𝘳𝘥 𝗶𝗻 𝘥𝘦𝘤𝘬 • 𝗶𝗻 operator • 𝗿𝗮𝗻𝗱𝗼𝗺.𝗰𝗵𝗼𝗶𝗰𝗲(𝘥𝘦𝘤𝘬) • 𝘀𝗼𝗿𝘁𝗲𝗱(𝘥𝘦𝘤𝘬) You didn’t implement: • iteration • slicing • search • random selection Python gave you all of that. That takeaway is: If your object behaves like a sequence, Implement __𝗹𝗲𝗻__ + __𝗴𝗲𝘁𝗶𝘁𝗲𝗺__ and let Python do the rest. Don’t build features. Plug into the Data Model. #python #datamodel #dunder #magicmethods #__len__ #__getitem__
To view or add a comment, sign in
-
🐍 The most misunderstood line in Python is this: for item in [1, 2, 3]: Most developers think the for loop just "goes through the list". What it actually does: calls iter([1,2,3]) to get an iterator, then calls next() on it repeatedly until StopIteration is raised. That's the entire protocol. Once you understand that, generators click immediately. A generator function with yield IS an iterator — Python implements iter and next automatically. And the magic of yield is that the function pauses at each yield and resumes from there on the next call. Full guide: iterator protocol from scratch, generator functions vs expressions, yield from for delegation, lazy 5-stage file processing pipeline, context managers (enter/exit), @contextmanager, suppress, ExitStack, and send()/throw() for two-way generator communication. A generator expression uses 200 bytes. An equivalent list uses 8MB. For the same data. 📎 Free PDF. Zero pip installs — pure Python standard library. #Python #Generators #Iterators #ContextManagers #PythonProgramming #SoftwareEngineering #CleanCode #BackendDev #Programming
To view or add a comment, sign in
-
I did not expect a Python topic about “unique items” to feel this useful… but sets changed that fast. 🐍 Day 7 of my #30DaysOfPython journey was all about sets, and this one felt different because it was less about storing data and more about controlling it. A set is an unordered collection of distinct items. It cannot hold duplicates, which makes it super handy in real-world coding. Today I explored: 1. Creating sets with set() built-in function and {} 2. Checking length with len() 3. Using in to check if an item exists 4. Adding items with add() to add a single item and update() for multiple items 5. Removing items with remove() (raise error if item not present), discard() (does not raise error), and pop() (removes a random item) 6. Clearing a set with clear() 7. Deleting a set with del 8. Converting a list to a set to remove duplicates 9. Set operations like union(), intersection(), difference(), and symmetric_difference() 10. Checking issubset(), issuperset(), and isdisjoint() What made sets interesting to me today was how practical they are when you want uniqueness, comparison, or clean data without duplicates. They may look simple on the surface, but they solve a very specific kind of problem really well. Which Python data type has surprised you the most so far: lists, tuples, or sets? Github Link - https://lnkd.in/eJfTX-HQ #Python #LearnPython #CodingJourney #30DaysOfPython #Programming #DeveloperJourney
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