Functions vs Classes: When to Use Which and Why?

  Рет қаралды 133,433

ArjanCodes

ArjanCodes

Күн бұрын

Functions vs. Classes?! Are you trying to decide which one to use in your code? In this video, I’ll explore how and when to use each of them, so you can make sure your code is as efficient and effective as possible.
Git Repo ➡️ git.arjan.codes/2023/funclass
✍🏻 Take a quiz on this topic: www.learntail.com/quiz/chlkzb
👷 Join the FREE Code Diagnosis Workshop to help you review code more effectively using my 3-Factor Diagnosis Framework: www.arjancodes.com/diagnosis
💻 ArjanCodes Blog: www.arjancodes.com/blog
🎓 Courses:
The Software Designer Mindset: www.arjancodes.com/mindset
The Software Designer Mindset Team Packages: www.arjancodes.com/sas
The Software Architect Mindset: Pre-register now! www.arjancodes.com/architect
Next Level Python: Become a Python Expert: www.arjancodes.com/next-level...
The 30-Day Design Challenge: www.arjancodes.com/30ddc
🛒 GEAR & RECOMMENDED BOOKS: kit.co/arjancodes.
👍 If you enjoyed this content, give this video a like. If you want to watch more of my upcoming videos, consider subscribing to my channel!
💬 Discord: discord.arjan.codes
🐦Twitter: / arjancodes
🌍LinkedIn: / arjancodes
🕵Facebook: / arjancodes
📱Instagram: / arjancodes
♪ Tiktok: / arjancodes
👀 Code reviewers:
- Yoriz
- Ryan Laursen
- Dale Hagglund
🎥 Video edited by Mark Bacskai: / bacskaimark
💻 Code example by Henrique Branco: / henriqueajnb
🔖 Chapters:
0:00 Intro
1:11 Overview
2:29 Functions
6:02 Classes
9:00 Recap
9:48 Outro
#arjancodes #softwaredesign #python
DISCLAIMER - The links in this description might be affiliate links. If you purchase a product or service through one of those links, I may receive a small commission. There is no additional charge to you. Thanks for supporting my channel so I can continue to provide you with free content each week!

Пікірлер: 207
@ArjanCodes
@ArjanCodes 6 ай бұрын
👷 Join the FREE Code Diagnosis Workshop to help you review code more effectively using my 3-Factor Diagnosis Framework: www.arjancodes.com/diagnosis
@jordanmungo917
@jordanmungo917 Жыл бұрын
Arjan just wanted to let you know that in the past year your channel played a huge role in helping me get significantly better at programming during my final year of college, and now working as a software developer. You're doing great work!
@ArjanCodes
@ArjanCodes Жыл бұрын
Thank you for sharing this!
@mooza.shorts
@mooza.shorts Жыл бұрын
Brother so happy to read this. The same thing happened to me as well four years ago and I'm so glad to see that the same thing happens to other people. Coding is the most empowering thing we can do
@manomancan
@manomancan Жыл бұрын
Arjan is a one-man university.
@Generic_text871
@Generic_text871 Жыл бұрын
Someone didn't go to university
@RickWeberEcon
@RickWeberEcon Жыл бұрын
Not enough committees to be accredited though.
@dansplain2393
@dansplain2393 7 ай бұрын
I would say also for a dev he’s extremely proficient at marketing.
@kyrgyzsanjar
@kyrgyzsanjar 5 ай бұрын
Word!
@fabio.1
@fabio.1 4 ай бұрын
LMAO
@dokick2746
@dokick2746 Жыл бұрын
My rule is: If it makes sense to encapsulate something in your own class (so interacting becomes easier and more intuitive), use classes, otherwise stick to functions.
@lukekurlandski7653
@lukekurlandski7653 Жыл бұрын
I also have turned to this philosophy. Often times I would find myself writing 3-4 closely connected functions that require much of the same data and are unlikely to be used elsewhere throughout the program. While a function is theoretically a more robust construct to perform this task, the code becomes way more readable if I wrap it in a class and use the __call__ method to initiate the process.
@poneis88
@poneis88 Жыл бұрын
Last year I made a web scrapper that checked prices of products and used Object Oriented approach "just to keep the code organized". I did not have the need to spawn multiple instances of the scrapper and I was not storing anything in my scrapper instance, so I felt that I was using the wrong tool for the job, because there was no need to use any of the properties of an object, I was just calling its methods. Now it is much clearer to me why to pick one versus the another and I am very thankful that you made this video.
@mariacardona8644
@mariacardona8644 Жыл бұрын
This has been my question for YEARS! Thanks for making it simple, love your videos.
@bearson4075
@bearson4075 Жыл бұрын
Thanks for this, it makes a lot of sense. I wish I had seen this in my earlier days learning to code. I definitely have written code as classes when they should have been functions and written code as functions when they should have been classes.
@calum.macleod
@calum.macleod Жыл бұрын
Well described. I spent months coming to this conclusion, I wish I had your video when I started. One big reason I like to use functions with separate data structures, is that it can help to keep Inter Process Communication simple. I use a shared memory approach for performance and I think the OOP model (which tends to include exposing data) would be awkward in an IPC Python system.
@jorgerios5330
@jorgerios5330 Жыл бұрын
I don't even need to see the rest of the video but the intro, because you are so clear as allways. I will see it out pure fun and entertainment. Thanks 👍🙏
@andriistefanenko6270
@andriistefanenko6270 4 ай бұрын
It is one the most simple and useful explanations of the difference between function/class usage cases Lots of thanks!
@akshualy
@akshualy Жыл бұрын
I also find myself mixing the approaches quite often. In a web backend with routers, for example, I want both states (classes) and pure actions. Pure actions would be a crud module with action-focused SQL statements (or ORM code), while states would be a schema module with classes that hold the state of the request and response. Additionally, the ease of testing argument can not be said enough. The amount of mocking and pre-test setups you have to do varies significantly by the amount of state in your code. All in all, really great video, I agree with all points made.
@kwabenakesseh1282
@kwabenakesseh1282 Жыл бұрын
I can't to be good like you Arjan. Thanks for the effort. Keep up the good work!
@divine-favouranigbogu413
@divine-favouranigbogu413 10 ай бұрын
I recently discovered your channel and I can honestly say; the more I watch you and type out the codes you wrote... The better programmer I have become. THANK YOU!!
@ArjanCodes
@ArjanCodes 10 ай бұрын
Wow, thank you!
@ledempire9066
@ledempire9066 9 ай бұрын
I just can not believe how every line of code in your videos is useful and worth to even dive deeper in the logic you create! Best of the best!
@ArjanCodes
@ArjanCodes 9 ай бұрын
Thank you so much!
@moinulislam7935
@moinulislam7935 Жыл бұрын
Thanks for sharing. It really helps
@MisterKorihor
@MisterKorihor Жыл бұрын
The duration of state is also an important factor. The rule can be formulated as follows: if you have state that needs to be retained for longer than one procedure call (and that state can be meaningfully encapsulated), then use a class. If the state is only needed for one procedure call, use a procedure .
@Flackon
@Flackon 11 ай бұрын
agreed, with the bank account example one could easily handle the state in a file or database, and have all the operations be functional
@kicknotes
@kicknotes 9 ай бұрын
This is a pretty sound generalization.
@DevinDTV
@DevinDTV 8 ай бұрын
very helpful
@jamesgrant3343
@jamesgrant3343 5 ай бұрын
The bank account example is ambiguous - irl want to use a transactional model with some backend data store. Unless you are the bank, the data isn’t mutated at your end, you send requests which are applied and the results are returned, ie; you don’t hold the object at your end.
@YaroslavOliinyk2023
@YaroslavOliinyk2023 Жыл бұрын
I love your humor. You are literally a meme guy. Thank you so much for your hard work and contribution to the Python community
@ArjanCodes
@ArjanCodes Жыл бұрын
You're welcome - glad you find it helpful! Now... I have to go back to creating memes ;).
@Lekkerman
@Lekkerman 10 ай бұрын
Thx for this video. I am doing something like the first example you provided. I did a function oriented programme but decided to move to a object oriented one to look more professional. I feel what you said : it’s highly complex (but maybe I architectured it wrongly) and not as easy to read as functional based. I think I am going to roll back part of the code 🤔
@mugudev
@mugudev Жыл бұрын
Exact tutorial i was looking ❤. Thanks
@ArjanCodes
@ArjanCodes Жыл бұрын
Enjoy the video!
@Curatiokyte
@Curatiokyte 11 ай бұрын
I have watched hour long lectures/presentations and read more articles than i care to count, on the pros and cons of OOP and using classes, and this is the first time I've seen someone sum it up so well. Honestly I could never figure out why anyone would ever use classes because they just seem to add a lot of complexity compared to the functionality they provide, so they always looked inferior to just using functions. This makes it so much easier to figure out where to use classes.
@ArjanCodes
@ArjanCodes 11 ай бұрын
Thank you!
@arthurdent8086
@arthurdent8086 Жыл бұрын
Well done, thx!!
@Djellowman
@Djellowman Жыл бұрын
Goeie video Arjan!
@marksegall9766
@marksegall9766 Жыл бұрын
Classes are used to model nouns (objects): employees, products, customers, etc. This matches well with relational databases which are also designed around nouns. A product table with a unique ID for each product and a customer table with a unique ID for each customer.The state of the nouns are critical in the database. It is natural to use OOP to represent the entities stored in the database.
@gemorp8506
@gemorp8506 7 ай бұрын
Is there any Subject in programming ?
@aocastro
@aocastro 5 ай бұрын
I agree, it sounds to me that objects are like tables in a database, actual structured data being manipulated on the fly, in the computer's working memory instead of non-volatile storage
@rossursino8175
@rossursino8175 Жыл бұрын
I also find classes to be useful ways to hold data and define data structures (in this case, dataclasses), which can be passed in as arguments to functions and instances of classes. Thanks for another fantastic video Arjan.
@ArjanCodes
@ArjanCodes Жыл бұрын
Totally agree & you’re welcome, Ross!
@maleldil1
@maleldil1 Жыл бұрын
I wouldn't count dataclasses as classes. Dataclasses are necessary in Python because there's no obvious way to define pure data: your choices in the standard library are dataclasses, named tuples and dicts, and dataclasses have the best ergonomics. They're much closer to pure structs.
@user-tz3lf3oh7c
@user-tz3lf3oh7c Жыл бұрын
Valuable insights as always!
@ArjanCodes
@ArjanCodes Жыл бұрын
Thank you Scott!
@RonaldPostelmans
@RonaldPostelmans Жыл бұрын
Hi Arjan, thanks, for this video, i realize i don't have to use classes for everything if i want to programm, following "best practise", i think functions are easier to use and classes are more complicated. so if not needed i will stay with the functions.
@outofahat9363
@outofahat9363 11 ай бұрын
This channel is a gold mine. I'm a DBA and I use Python for simple automations, but I like to know the language more in depth and this channel seems perfect for it. Thanks for explaining the more high level concepts very clearly and with examples that I wouldnt easily find and I didnt get to study at uni not in this detail at least (I mainly did iteration algs in C and statistics with R no OOP)
@ArjanCodes
@ArjanCodes 11 ай бұрын
Glad you enjoy it!
@bjh4970
@bjh4970 Жыл бұрын
I love this framework! One more: if your program is process-focused, that’s when you use an imperative style
@KonstantinPrydnikov1
@KonstantinPrydnikov1 Жыл бұрын
Amazing cosmically music, good light. I almost fly away to the andromeda. Thanks
@Dubs3
@Dubs3 Жыл бұрын
Perfectly explained, I loved this
@ArjanCodes
@ArjanCodes Жыл бұрын
Thank you, Kyle!
@Gaspar.Albertengo
@Gaspar.Albertengo Жыл бұрын
Thanks. 12y ago I started programming Python and a big piece of administrative software for my business... Back then I really tried to use classes, because "that's how it's supposed to be". But found it was simpler if there was mostly plain functions. I did it that way, and it's still working everyday today. Now thanks to you I know I'm actually doing it right 👍🎉🎉🎉
@ArjanCodes
@ArjanCodes Жыл бұрын
Awesome! Thank so for sharing this!
@alphenit
@alphenit Жыл бұрын
@2:35 I love it when Arjan always says: "I have a very simple sample application here" Me: Eyes squinting: I have no clue what this does
@nonaligned293
@nonaligned293 Жыл бұрын
from now on I will think about classes and functions in terms of bank accounts and file i/o. Thanks dude
@simonarcher1510
@simonarcher1510 Жыл бұрын
As a Go developer I face the same challenge. Generally I start with functions, and find that I "step up" to data classes as needed. But truthfully, using both functions and data classes together is the answer. Personally I find data classes easier to test since they can implement interfaces, which allow for the easy creation of mock/fake implementations. Functions, on the other hand, can be harder to test, especially when they're coupled to other parts of the system. Also, in Go, a type introduces a new namespace/scope for its methods, which is valuable when the package you're working in is already heavily populated with functions. With no overloading of methods or functions, managing the namespace is critical.
@JohnCoughlan_JAC
@JohnCoughlan_JAC 3 ай бұрын
Great advice, thanks for sharing!
@ArjanCodes
@ArjanCodes 3 ай бұрын
Glad you enjoyed it, John!
@doop9134
@doop9134 2 ай бұрын
Thank you, ArjanCodes!
@ArjanCodes
@ArjanCodes 2 ай бұрын
Glad you enjoyed the content!
@morgankerle5566
@morgankerle5566 11 ай бұрын
Awesome content! As a self-taught programmer who first learnt functional programming, I often struggled to see the benefit of OOP. This is a super helpful framework for thinking about the differences between the two.
@ArjanCodes
@ArjanCodes 11 ай бұрын
Thank you, Morgan!
@ilangated
@ilangated Жыл бұрын
I feel you can sometimes use classes to making functional programming cleaner. I was developing an automated report for work. The program would calculate some data, then either send a daily report or an invoice at the end of the month. Completely stateless, so a functional approach made sense. Different clients received their own version of the daily or monthly emails so we would need to write the same types of functions for each client. At the end of the day, it was simpler to create an interface which bundled all of these email-sending actions together. For each client, we used a different implementation of this interface. Technically it was an abstract class rather than an interface since Python doesn't have interfaces.
@HelmutIsaacPadillaChavarria
@HelmutIsaacPadillaChavarria 11 ай бұрын
hi, python has protocol that can be used as interfaces, Arjan has a video about abstract classes vs protocols
@djbroake9810
@djbroake9810 Жыл бұрын
Thank you for making this video.
@ArjanCodes
@ArjanCodes Жыл бұрын
Glad you liked it!
@kosmonautofficial296
@kosmonautofficial296 Жыл бұрын
Great video thank you
@Louviewtube
@Louviewtube 5 ай бұрын
Thank you.
@joansparky4439
@joansparky4439 2 ай бұрын
thanks for the overview.
@ArjanCodes
@ArjanCodes 2 ай бұрын
Glad you enjoyed the video!
@Michael201078
@Michael201078 Жыл бұрын
Perfect explanation.
@ArjanCodes
@ArjanCodes Жыл бұрын
Thank you, Michael, glad you liked it!
@redkvicka
@redkvicka 11 ай бұрын
The intro is perfect :D love your content and your humble attitude.
@ArjanCodes
@ArjanCodes 11 ай бұрын
Thank you so much! :)
@rahulkmail
@rahulkmail 4 ай бұрын
Very nice explanation....
@vaishnavisonawane8559
@vaishnavisonawane8559 Жыл бұрын
Arjan, you inspired me to dive deeper into python and made me want to get better at it! Good stuff. Kudos!!!!
@ArjanCodes
@ArjanCodes 11 ай бұрын
Thank you!
@joxa6119
@joxa6119 9 ай бұрын
Listening to you is like listening to the best senior developer that never existed in my company.
@7scientist
@7scientist 8 күн бұрын
Very helpful, thanks
@ArjanCodes
@ArjanCodes 7 күн бұрын
Glad it was helpful!
@damienong1462
@damienong1462 Жыл бұрын
Thank you for the content! Just subscribed because i really need this knowledge in video. Hopefully I can gain more after subscribing !
@ArjanCodes
@ArjanCodes Жыл бұрын
Glad to hear you like the content, and welcome on board! ;)
@cerealport2726
@cerealport2726 Жыл бұрын
As a self-taught coding person (though far from expert), I have often asked myself this question. Thanks for a great perspective on it.
@harrycrab8725
@harrycrab8725 8 ай бұрын
I have a question about basic programming structures. I have a series of functions that access different databases. I’m not using APIs or json requests, but direct connections, think of them as simple spreadsheets. Function 1 hits database 1 and for those records that meet the criteria, I return values from columns A, C, D, and G. What is the pythonic or professional way to return? I’ve got multiple rows that meet the criteria. I’ve tried tuples of lists, dictionaries of tuples, e.g. return [row1 : (A, C, D, G)] … and returned a dict of subdicts [row1 : [A:value], [C:value]…] They all work but retrieving values by index or keys:subdict key seems convoluted. Thanks!
@johncrunk8038
@johncrunk8038 Жыл бұрын
One more notch in the programming Swiss Army Knife. Thanks.
@MultiJpva
@MultiJpva Жыл бұрын
God bless!, thank you for you knowleadge
@ArjanCodes
@ArjanCodes Жыл бұрын
You’re welcome - glad you find it helpful!
@dj196301
@dj196301 4 ай бұрын
What an outstanding video. It even make sense when you're questioning if it makes sense.
@ArjanCodes
@ArjanCodes 4 ай бұрын
I'm glad you enjoyed the video!
@TheWrighteousOne
@TheWrighteousOne 5 ай бұрын
Coding sensei, thank you for explaining the difference between class and functions. To confirm, if I wanted a code that monitored the stability of proteins over time, that would be state-focused, vs if I wanted to model the kinetics of protein binding, would that be more action-focused. please let me know if I am understanding.
@JFloridaTech
@JFloridaTech 10 ай бұрын
Finding out about classes is almost the same “omg” revelation moment as when you first find out about Python 😅 dope vid
@DouglasHirsh
@DouglasHirsh Жыл бұрын
The Babylon 5 reference is Awesome! Really takes me back.
@mghalix
@mghalix 5 ай бұрын
Great video! comming from pure object-oriented languages to Python I've always struggled to know when to choose just functions over classes, I still have a question though. What about classes that act as a container for multiple related actions? for example, having a class responsible for file utilities, getting a file's absolute path, basename, extension, .... you name it. Would it be better to have file utils as a file containing those functions or have them inside a FileUtils class and mark those methods @staticmethod?
@neilmurphy7064
@neilmurphy7064 Жыл бұрын
Great intro!
@Forseti2
@Forseti2 Жыл бұрын
I prefer this kind of content, over videos of his studio or equipment.
@adrianzuur5589
@adrianzuur5589 Жыл бұрын
Thanks, Arjan. A question: Say I take a class, make all its instance methods return "self", and then just take them out of the class and convert them into functions. After this, the class is left with only attributes that represent state, and no behavior. What are some good arguments against doing this? I can think of one, which is it can make it harder to quickly read which functions "go together with" which data, loosely speaking. But I'm curious to know if people have other reasons.
@jatodd3746
@jatodd3746 6 ай бұрын
Liked for the B5 reboot reference!!!
@js46644
@js46644 Жыл бұрын
Hopefully this video is relevant for more than a few more years. Eventually the correct decision will be whatever GPT-5 decides.
@oscarengland6122
@oscarengland6122 7 ай бұрын
State-focused programming is ill advised, especially for bigger more complex code. My suggestion: avoid mutable state like the plague. Classes are still very useful though, even if their attributes don't get mutated: classes model data, encapsulate properties (read-only) and encapsulate functionality bound to this data (like closures). I think of classes as (1) immutable structs that can have calculated fields or (2) parameterized modules. Functions can tempt you to call global objects or global configuration, which are then difficult to factor out when you need to switch those objects. Classes can tempt you to mutate the object state, which after a few hundred lines looks a lot like mutating globals. So basically, avoid side effects.
@Jedimaster36091
@Jedimaster36091 6 ай бұрын
Software is all about side effects. There is not much benefit for a software which does not mutate state. At the end of a workflow, you still need to persist the mutated state in a database, file, etc.
@amitaniket5472
@amitaniket5472 Жыл бұрын
Are you spying on me. Seriously you come up with topics which I recently search😊❤
@GOTHICforLIFE1
@GOTHICforLIFE1 Жыл бұрын
Same for me - Been moving onwards to functional programming recently and found myself struggling with certain aspects feeling more complicated than if i used classes. So this hybrid solution is what works the best for my imo.
@AhmedBesbes
@AhmedBesbes Жыл бұрын
Hey ChatGPT, can you summarize the following video and focus on the code examples it used? """ Sure, in the video, the speaker provides two examples to illustrate when to use functions versus classes. In the first example, the speaker demonstrates a simple program that analyzes data from a CSV file. The program has a few functions that take input arguments, do something with the data, and then return a result. These functions are then called in a specific order to carry out the analysis. In this case, the program is action-focused, and functions are the most suitable choice for organizing the code. In the second example, the speaker demonstrates a program that simulates a simple game of blackjack. In this case, the program needs to maintain state information such as the player's hand, the dealer's hand, and the deck of cards. The program also needs to have methods that modify this state such as dealing cards and checking for a win. In this case, the program is state-focused, and classes are a better choice for organizing the code. Overall, the examples demonstrate that functions are best suited for action-focused programs, while classes are better for state-focused programs. However, it's important to note that there is no hard and fast rule, and the choice between functions and classes ultimately depends on the specific requirements of the program. """
@user-ur9xv7bl7g
@user-ur9xv7bl7g 11 ай бұрын
For me I prefer the more data oriented approach where data is first class citizen, for more back end application. I personally believe this approach give clear definitions between the layers and void a lot of mocking and stubbing if it more data centric. Though I do like using my own types h i.e data class etc. For python libs I go more OO seems reasonable to when creating a lib.
@djl3009
@djl3009 Жыл бұрын
functools.partial, which you have already covered in a few videos, is a great example of using functions to cover that "grey area" where you want to leverage some lightweight state but don't want the belt-and-braces approach of classes.
@spaceidiot200
@spaceidiot200 7 ай бұрын
yay, another B5 fan
@kevon217
@kevon217 Жыл бұрын
what’s your lighting budget? love the hues in your videos.
@dyanosis
@dyanosis Жыл бұрын
He made a whole video about his set-up, you should probably start there.
@ekaterinakorolkoviene5824
@ekaterinakorolkoviene5824 Жыл бұрын
Arjan is extra witty today. 😜
@nathansun1654
@nathansun1654 Жыл бұрын
Have been looking for an answer for this question for long time and just wanted to ask you one hour ago…. Also another question: how can we organize and/or import multiple functions and classes better in py file(s)?
@dyanosis
@dyanosis Жыл бұрын
Comments. Use them. If your editor/language allows region comments, use those.
@Khan-At-Large
@Khan-At-Large 7 ай бұрын
is the diagnosis page not working ? unable to sign up
@maleldil1
@maleldil1 Жыл бұрын
The decision is usually intuitive: pure functions become the obvious choice if you minimise state. In the cases where you _need_ state (and if you're careful about your design, you'll realise that there aren't many), introduce classes, but be very careful about how you present this state to the outside world. My code is primarily dataclasses (or TypedDicts if I can't help it) and functions that operate on them, with a few classes here and there when state is unavoidable.
@kayakMike1000
@kayakMike1000 Жыл бұрын
Why wouldn't something require state? I work in firmware, motor control, and everything I am used to is managing state, encoders, tachometer, dynos, prechargers, igbts.... it's all very stateful.
@Jedimaster36091
@Jedimaster36091 6 ай бұрын
It depends on what you consider as state. I'd argue that any data you pass as arguments to functions or return from functions represents state. A number passed as argument to a function represents some state somewhere in your system.
@ErikS-
@ErikS- Жыл бұрын
Arjan has a new logo... But what about the cushion that his wife made (with the old logo)?! And maybe Arjan can explain the idea behind the new logo? I.e. what does it stand for? Maybe it is a bit inspired by the "NPO" logo of the dutch public TV😉 The NPO also has two squares on top (in green for NPO3).
@vitalyromas6752
@vitalyromas6752 Жыл бұрын
The intro is quite triggering. I couldn't continue with lesson at once, rewinding the example with Haskell around 6-7 times and trying to calm down. Realizing that the intro idea was nice and witty, explaining just the idea of code over complication consequences with irony. The video footage just hit me showing the ukrainian defence weapons surrounded with words "start WW3", reminding the ruzz prop. ("Neptun" system which allowed to sink the ruzzian "Moskva" destroyer, preventing ruzzian occupation of Odessa, saving big part of Ukraine from ruzzian bombers which have previously used "Moskva" "umbrella".) No blames, just sharing my impressions. I got to watch the lesson "Functions vs Classes" - it is just great. The critical info missing in many courses and tutorials. Thank you for sharing the lesson, I really appreciate it.
@pointer333
@pointer333 5 ай бұрын
perfection
@ArjanCodes
@ArjanCodes 5 ай бұрын
Thank you!
@dovids.greenberger435
@dovids.greenberger435 Жыл бұрын
Classes are great for Polymorphism which helps write code that follow solid principles like open closed and others.
@joelmanning249
@joelmanning249 6 ай бұрын
You know I really like this explanation. Too often I find videos where OOP is decried as demonic and you can get away with using functions for most OOP uses.
@MarkusBurrer
@MarkusBurrer 7 ай бұрын
I have a different definition: use objects for side effects (network, file, database, UI...) and functions for everything else
@TN-cx4qi
@TN-cx4qi 6 ай бұрын
I like to group tasks, if they are complex, and data into classes.
@spaderkungskuk
@spaderkungskuk 10 ай бұрын
Classes makes it easy to collect belonging functions. What’s good strategy there when using functions to not end up with everything together?
@sylvainprive1754
@sylvainprive1754 Жыл бұрын
can you make a video about OpenSource code ? how to contribut, and maybe launch a new wave ? i'm sure you community can do big things. who knows, maybe the full safe driving is in our hands ... ;)
@paxdriver
@paxdriver Жыл бұрын
I'm learning Python just to get Babylon 5 reboot. I don't know how that'll happen, but I have faith in arjan lol
@edgeeffect
@edgeeffect 5 ай бұрын
Babalon 5!!!! :)
@DevinDTV
@DevinDTV 8 ай бұрын
8:15 (in python) couldn't you just use a list of dicts? that's only 1 variable and basically does the job of a class (and of course in reality you'd just be using a db)
@kristoffertjemsland8087
@kristoffertjemsland8087 Жыл бұрын
What I don't get, is how classes are supposed to "store" these states/data/transactions. I assume you'de have to pass every transaction to a database, for example MS SQL?
@m3hdim3hdi
@m3hdim3hdi Жыл бұрын
09:09 line 49 what tuple[a, b, c] means?
@catface875
@catface875 27 күн бұрын
What about mixing functional with oop?
@wk0djs-TheBigD
@wk0djs-TheBigD Жыл бұрын
I've been writing code for about... oh... when playing in the dirt was good clean fun. The classes stuff is not sinking in. In the backing app; the class only lives for a given time as the single account updates are complete? In the example, the init set the value of the balance to zero. In real life, something would have to feed the current balance to the init part. Calling program open transaction file. Sets the starting balance for this account. How would the class get and keep the balance for this account? Then a loop to process all the updates for this account Call class Save the updated balance get next account So, we basically have two programs, the driver and the class. I'm still not getting the need for a class, when a function can do the same thing and be contained in one program. Not trying to be critical, trying to understand as my attempt to use classes seem to fail and I have to revert it back to a function. I know and have uses a program that call other programs, but that/those called programs do very little and always need some program to drive the process. Please help.
@marktiempo466
@marktiempo466 Жыл бұрын
Classes and functions are not programs but are components that you can use in making programs. Class defines the object, its properties(data), and methods(what you can do with said data). Functions typically describes "actions" in programs. When making a program you can use just functions but you will have to track all the data yourself(doable, think games made in C). However, if you are dealing with large amount of related data that are structured, using classes makes development mentally easier.
@DiegoMartinez-sr9rm
@DiegoMartinez-sr9rm 5 ай бұрын
If we begin writing a program, initially we think is state focused, but end up with lots of static methods...would this be a signal that in fact our program is action focused and should switch to pure functions?
@Geza_Molnar_
@Geza_Molnar_ 4 ай бұрын
I'm going to provoke you : What's the reason you begin writing program, and not begin drawing diagrams before that?
@DiegoMartinez-sr9rm
@DiegoMartinez-sr9rm 4 ай бұрын
@@Geza_Molnar_ well... I've doing uml diagrams since then really hahaha never face this question anymore, however, if is not the case and I haven't done any diagrams, lots of static methods should be a signal to migrate the module to functions
@peterxxl1244
@peterxxl1244 Жыл бұрын
The intro is really funny. And the content is not only entertaining, but also informative. Although I use Python rather rarely (much more often Basic-Forks like Xojo, B4X, VB), but in other languages you can program - like with Python - both procedural and object-oriented. I also like to use PureBasic, which works purely procedural without any object classes, and I haven't encountered any limits of feasibility with it yet, because in my opinion OOP is not essential for efficient programming. Hmmm...I would like to emphasize that I do appreciate certain organizational advantages of OOP. However, it always makes sense to keep code organized, which is why I prefer the use of functions/procedures within clearly labeled modules over the use of classes because of easier testing. Anyway: a very interesting post, thanks a lot!
@aocastro
@aocastro 5 ай бұрын
it sounds to me objects are more suitable when we have to store and manipulate data during the program/system execution, i am right @arjancodes ?
@ruslanoid
@ruslanoid Жыл бұрын
+1 for Babylon5 reboot
@hbbexxter4666
@hbbexxter4666 Жыл бұрын
Hello Arjan, I like to ask a question on type hints in Python. For example, @ 2:54, consider line 49: "column_name" is of type "str", "file" of type "DictReader" and "field_sep appears to be of particular type "str | None = None". The function returns an object of type "Counter[str]", i.e. "Counter" is being fed a list of strings. Question 1: How come "DictReader" is a file type at all and what is "str | None = None" supposed to mean? Question 2: Can you please elaborate, or make a detailed video on advanced type hints. Using type hints is probably a big issues for lots of learners .I know you already have one out, but there seems to be much more on the topic. It would probably also fit nicely to a guide on how to use "pylint" effectively. Many thanks for your help.
@jurgenrusch4041
@jurgenrusch4041 Жыл бұрын
Hi "hb bexxter", regarding your question 1, which actually holds 2 'sub'-questions, here is my 2 cents. The DictReader class is defined in the csv module from the Python Standard Library. I would not call it a 'file type'. It is a type hint stating that the argument named "file" has that type. As the documentation of DictReader explains it is a class that implements iteration and at each iteration a dict is returned. And that is exactly what you see in the implementation of the function where it reads "for line in file:". And then, on the next line, you can see confirmed that the loop variable "line" is indeed used as a dictionary since it is indexed by a column name. Regarding your 2nd 'sub'-question: in "str | None = None" the part before the '=' is the type-hint which states that argument field_sep is either a str(ing) or None. A slightly older form of this type-hint would be "Optional[str]". And finally, the part "= None" (so after the type hint) states that the default value of argument field_sep is None. I.e., if the function cumulative_count would be called with only one argument (being the actual value for argument file) then the value None would be used for argument field_sep. I hope this helps you further.
@hbbexxter4666
@hbbexxter4666 Жыл бұрын
@@jurgenrusch4041 many thanks Jurgen, for your great explanation and being such a proactive member of the community.
@jazzyniko
@jazzyniko Жыл бұрын
Interesting! Classes are then used as a last result so functions should be the standard 🤔
@ipadista
@ipadista Жыл бұрын
1:30 Not only Haskell :) ``` def say_something(): print("something") def func_handler(func_par): func_par() func_handler(say_something) ```
@RalphKoettlitz
@RalphKoettlitz Жыл бұрын
Classes are always a good idea, when an entity is not stateless, hence changing in time be cause of processes, while applying a change of state could be a function.
@mervmartin2112
@mervmartin2112 Жыл бұрын
You had me at the black hole. Thanks for a great definition. So we use classes to define pre-boom state, boom state, and post boom state. And functions to get the boom where we want it. Interesting that classes (states) appear digital and functions analog.
@axel584
@axel584 Жыл бұрын
And what about "batch"... They are actions to change the state... so, classes or functions ?
The Ultimate Guide to Writing Classes in Python
25:39
ArjanCodes
Рет қаралды 101 М.
одни дома // EVA mash @TweetvilleCartoon
01:00
EVA mash
Рет қаралды 2,6 МЛН
Мама и дневник Зомби (часть 1)🧟 #shorts
00:47
Do you like a chocolate surprise egg?🥚🍫🥰 #demariki
00:32
Object Oriented Programming vs Functional Programming
18:55
Continuous Delivery
Рет қаралды 741 М.
This Is Why Python Data Classes Are Awesome
22:19
ArjanCodes
Рет қаралды 782 М.
The Ultimate Guide to Writing Functions
24:31
ArjanCodes
Рет қаралды 174 М.
Python's __repr__ and __str__
3:28
Python Morsels
Рет қаралды 6 М.
5 Tips To Achieve Low Coupling In Your Python Code
18:30
ArjanCodes
Рет қаралды 93 М.
5 Tips For Object-Oriented Programming Done Well - In Python
16:08
5 Good Python Habits
17:35
Indently
Рет қаралды 265 М.
Python dataclasses will save you HOURS, also featuring attrs
8:50