This Is Why Python Data Classes Are Awesome

  Рет қаралды 819,885

ArjanCodes

ArjanCodes

Күн бұрын

Пікірлер
@ArjanCodes
@ArjanCodes Жыл бұрын
💡 Get the FREE 7-step guide to help you consistently design great software: arjancodes.com/designguide.
@sbeau
@sbeau 2 жыл бұрын
Arjan, your ability to explain detail in a structured, easy to follow format is second to none. Thank you for another great tutorial.
@VladimirSanchez
@VladimirSanchez 2 жыл бұрын
He's in the same league as Nana! ;)
@saketh_s
@saketh_s Жыл бұрын
One thing to note, when you pass data class "frozen=True", instance is immutable. So at 13:29 you are actually getting error for search_string which we are trying to change at _post_int_ at object creating not for person name (line 25) You can not change fields even inside the class even with setter methods.
@hematogen50g
@hematogen50g Жыл бұрын
I came to Python from C# so I picked up coding quickly. But thinking in python way is harder, so such videos really help me develop python mindset.
@jordansilke3629
@jordansilke3629 2 жыл бұрын
This is truly an excellent successor to your earlier video on data classes, bravo!
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thanks Jordan, glad you liked it!
@vedambala
@vedambala Жыл бұрын
Arjan, You should seriously consider doing a full fledged Python course from beginner to advance level laden with Projects so we can learn Python the Pythonic way.
@Volcan-kf3oz
@Volcan-kf3oz Жыл бұрын
This guy really know what he is doing every video I've seen he able to break it down to where even a person new to python can understand "if you can't explain it simply, you don't understand it well enough." - Albert Einstein
@ArjanCodes
@ArjanCodes Жыл бұрын
Thank you so much!
@auroraRealms
@auroraRealms 2 жыл бұрын
Although I like the ability to learn and use Data Classes. All my years of database programming has taught me to use JSON, and Dictionaries as much as possible. Especially in Web Services. The caveat to using Data Classes is that; changing a column type, name or description, or adding or removing columns ends up as a use case/feature ticket for the programmer which can take a bit of time to run through the development cycle. These column changes are guaranteed to happen all the time, in the life cycle of the product. A second problem, is that the code must be completely thrown out, when starting a new product. Using Dictionaries very often can allow these column changes from config files without recompiling or restructuring the code base. Going back to Web Services. Dictionaries can be web requests and responses, in JSON, without translation. This makes for high performance, and easy maintenance in the life cycle of product. It also makes copying and pasting the code directly into other products a possibility.
@duaneatnofroth
@duaneatnofroth Жыл бұрын
I checked out your channel in hopes to see some examples of the techniques you mentioned in your reply above. I think you might get a good response if you ever decide to do some programming videos. I'd love to see some from you.
@fabio.1
@fabio.1 Жыл бұрын
👀
@GankThat
@GankThat 10 ай бұрын
​​@@duaneatnofrothhe doesn't need to give examples when what he's stating is already best practice when working with data
@equu497
@equu497 2 жыл бұрын
I wasn't even trying to learn about dataclasses...but it came up on my recommended and I watched the entire thing- Got me thinking I should clean up some old code.
@coupmd
@coupmd 2 жыл бұрын
Enjoyed this video. Would enjoy more videos on intermediate/advanced python standard library tools and their examples of their intended use cases.
@techassets
@techassets 2 жыл бұрын
I have an observation. Even if you remove the person.name = "Arjan" and set the dataclass frozen=True you will have a FrozenInstanceError. Because you use the __post_init__ method and the frozen dataclass does NOT allow it ! So you must remove the __post_init__ method if you want to freeze the dataclass and prove that you cannot modify it after initialization. THANK YOU FOR YOUR AMAZING VIDEOS !
@MiguelRozsas
@MiguelRozsas 2 жыл бұрын
so, you are saying we not have both ? A frozen class and __post_init__ ? There is any workaround for this ?
@bryan_hiebert
@bryan_hiebert Жыл бұрын
Just like every video from you my knowledge of programming with python is advanced. I really appreciate the content you provide, thank you!
@mpotane
@mpotane 2 жыл бұрын
Wow, the most complete tutorial I've seen. Not a single detail has been missed.
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thanks, glad you liked it!
@wtfKwaku
@wtfKwaku 2 жыл бұрын
OMG, I been working on this project and for like 3 days I been trying assign a class and return something! Great Video!
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Glad it was helpful!
@neoporcupine
@neoporcupine 2 жыл бұрын
Working my way through my third LinkedIn Learning (LIL) Python course, all of which claim to teach you the data structures available. Arjan's short video explains a dozen reasons why you want to use dataclass that the LIL courses didn't include. Thank you!
@ritzg98
@ritzg98 Жыл бұрын
This guy is excellent. I've only watched a couple of his videos so far. Planning on watching a few more today. Clear, concise, accessible. So far, great!
@ArjanCodes
@ArjanCodes Жыл бұрын
Glad you like them!
@FrankenLab
@FrankenLab 2 жыл бұрын
@ArjanCodes, great video. I consider myself a casual programmer and have been programming with Python for about 5yrs and absolutely love it. I started programming "casually" in the 80's with C, Pascal, Assembler, then Perl and now Python. I really enjoyed C and Perl, but Python is by far my favorite now. This is the first video I've seen of yours and based on that I just subscribed to your channel. I enjoy your style and explanations and I don't have to play the video at twice the speed waiting for you to get to the point. I'm looking forward to seeing more of your Python videos.
@alfonsov3190
@alfonsov3190 2 жыл бұрын
I had a couple of questions during the video, but immediately after they surged, you addressed them. Thanks a lot, as usual!
@ArjanCodes
@ArjanCodes 2 жыл бұрын
You're welcome :).
@mampiisaotaku
@mampiisaotaku 2 жыл бұрын
i just discovered your channel a few videos back. and what you share is pure gold
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thank you so much, glad you like it!
@naderbazyari2
@naderbazyari2 Жыл бұрын
I am modifying my code in pycharm right now according to your tips. Awesome video. Much much appreciated.
@ArjanCodes
@ArjanCodes Жыл бұрын
Nice work!
@Rebeljah
@Rebeljah 2 жыл бұрын
I am 100% gonna use the repr=False option, thank you!
@AbhishekVaid
@AbhishekVaid 9 ай бұрын
The progression of introducing features and clarity of explanation is very high ! Great Job !
@ArjanCodes
@ArjanCodes 9 ай бұрын
Glad you liked the video!
@Rebeljah
@Rebeljah 2 жыл бұрын
New AC video! I am actually using DCs right now to define a common set of data for server/client communication. It's very nice because I can subclass a super dataclass in order to get functionality like serialization/deserialization fairly easily. Adding new data types just takes a few lines of code now!
@centar1595
@centar1595 2 жыл бұрын
So you're enjoying the AC/DC video? :)
@Rebeljah
@Rebeljah 2 жыл бұрын
@@centar1595 yes I am! Lol
@davidlakomski3919
@davidlakomski3919 2 жыл бұрын
I've tried 2 days ago to make a package to manage state of jobs with Pydantic, and even if it was less messy than what I did before, I realize now how easier and cleaner it would have been with dataclasses ! Thanks for the excellent content !
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Glad it was helpful, David!
@Cloudvenus666
@Cloudvenus666 2 жыл бұрын
Thanks!
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thank you, Marcus!
@cheesecake_mafia
@cheesecake_mafia 5 ай бұрын
I think you might find this interesting if you don't already know, but you can define class variables while using @dataclass. You just need to import ClassVar from typing and then when you are defining the class variables, use ClassVar after the colon and then put square brackets and the datatype of the class variable. I think this feature was mentioned in the documentation and also Tech with Tim channel helped me realise this. Great Video! Cheers.
@ArjanCodes
@ArjanCodes 5 ай бұрын
Interesting, didn’t know that was possible. Thanks for sharing!
@amosmunezero9958
@amosmunezero9958 2 жыл бұрын
Great tutorial in Python, its been a while I havent done some Python, I didnt know much about DataClass. So thank you.
@amadzarak7746
@amadzarak7746 Жыл бұрын
Wow! How did I JUST find this channel. You are awesome man!
@ArjanCodes
@ArjanCodes Жыл бұрын
Welcome aboard! :)
@WalterBoring
@WalterBoring 2 жыл бұрын
Cool video. I didn't even know about the dataclasses lib until this. I'm putting it into my project now.
@Cookie-mv2hg
@Cookie-mv2hg 2 жыл бұрын
Since we're talking a lot about dataclasses, I wonder would it be great combining with sql database. If we could get a review that would be very helpful!
@JoshSmeda
@JoshSmeda 2 жыл бұрын
I really love your videos on these subjects - keep it up!
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Glad to hear, Joshua - and I will ;).
@mauisam1
@mauisam1 2 жыл бұрын
Again Arjan, another fantastic video. If I become half the programmer you are I will be lucky. But I just have the love of programming so I will continue to work on improving my knowledge and skill set. So many programmer say just read the Docs, but I learn from examples and the Docs usually have few if not poor examples. So a big part of my improvement will be in thanks to your love of sharing your knowledge. Thank you...
@qrubmeeaz
@qrubmeeaz 2 жыл бұрын
... aaand he's done it again!! Brilliant! Thank you.
@zuydra
@zuydra 2 жыл бұрын
Hi Arjan, your videos on Python are the best I have ever seen on KZbin. Please keep up the good work 👍
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thanks so much! And will do 😊
@sambeard4428
@sambeard4428 Жыл бұрын
Geweldig en duidelijk overzicht van deze erg handige feature. Gisteren liep ik precies nog tegen deze use case aan, veel boillerplate code. Dit lost het mooi op. Thanks!
@barrykruyssen
@barrykruyssen 2 жыл бұрын
Hi Arjan. Great video, very well presented. I've just found your channel and will be watching all your videos as time permits. I'm a retired software engineer (started back in the early 80's). 5 weeks ago I decided, in my retirement, to switch back to linux (and python - which I have never used), just for fun, after 25 years in microsoft products (prior to that I was in the Unix world). I'll be changing 2 of my classes to data classes ASAP. I have just read your Software Design Guide and agree with much of what you've written. I think you have glossed over the most important aspect "Who’s it intended for?". Determining who is doing what, why they do it and what they expect from it and then managing the expectations is the key to a successful implementation. You do mention your “zoom out and zoom in” approach which probably encompasses this but in my planning, the people are the key and if there are problems in this area it can be very costly down the track (we qualified our prospective clients and if the people problem was too great we walked away from deals), as you say we write the code for the client, not for us. Thanks
@Saidffff
@Saidffff 2 жыл бұрын
Nice one Arjan! Also, __slots__ give faster attribute access AND space savings in memory due to switching to a more compact data structure. When you create many instances of the class, that is another advantage. Got that from reading 'Python distilled', written by the venerable David M. Beazly.
@chswin
@chswin 2 жыл бұрын
Lol a python dev worried about memory allocations…
@songsft.googleassistant2542
@songsft.googleassistant2542 2 жыл бұрын
May you have tons of subs Arjan cause you're one of the few youtubers whose python codes aren't messed up and you're instructions are on the point and useful.
@SiarheiAkhramenia
@SiarheiAkhramenia 4 ай бұрын
My God, what an incredible sound quality!
@ArjanCodes
@ArjanCodes 4 ай бұрын
Thanks!
@ninadloke785
@ninadloke785 2 жыл бұрын
Watching your video for first time. Deserves subscribe!! Great work and thanks!!
@jaa928
@jaa928 9 ай бұрын
Thank you for the clear and concise explanation. As an experienced programmer, but newcomer to python this was an excellent, example-driven discussion.
@ArjanCodes
@ArjanCodes 9 ай бұрын
Happy you enjoyed the content!
@ChrisPatti
@ChrisPatti 2 жыл бұрын
I really love this video! It’s an excellent quick, guided tours to how powerful data classes, can be. Thanks for making it!
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thank you Christopher. Glad it was helpful!
@rrestituti
@rrestituti Жыл бұрын
Amazing video. I didn't know dataclasses and I found it amazing. Thanks, Arjan . Got a new subscriber.
@ArjanCodes
@ArjanCodes Жыл бұрын
We're glad to have you, welcome aboard!
@shotihoch
@shotihoch 9 ай бұрын
And again... VERY interesting. Started as video for tea-brake, finished in my obsidian, writing down some very interesting tips. Thanks.
@ArjanCodes
@ArjanCodes 9 ай бұрын
I'm glad you found the video useful! :)
@thomasoa
@thomasoa 2 жыл бұрын
The error you got one the frozen case was not when you set .name = “Foo”, but in the __post_init__ method, setting _query_string. Is there any way to do post_init when using a frozen dataclass?
@yakkayakka360
@yakkayakka360 2 жыл бұрын
I noticed that too. Glad I'm not the only one. Did you ever get an answer?
@paulorsbrito
@paulorsbrito 9 ай бұрын
What happened to “explicit is better than implicit” and to “there should be only one obvious way to do something”?
@beershigachi4797
@beershigachi4797 5 ай бұрын
Zen of Python. I love that. So when I saw dataclasses I decided to use Haskell as my primary language.
@NdamuleloNemakh
@NdamuleloNemakh 2 жыл бұрын
Exactly what I've been thinking all along, "strict mode" is a feature that must be seriously considered
@christopheanfry
@christopheanfry Жыл бұрын
Thank you so much for this video and for the design guide I’ve just download, it’s literally gold 🙏
@ArjanCodes
@ArjanCodes Жыл бұрын
You’re welcome! Glad you find it helpful.
@christensencode7538
@christensencode7538 2 жыл бұрын
Your videos on dataclasses are awesome! I've used them for a few projects and they really help.
@marknielsen4494
@marknielsen4494 11 ай бұрын
Super high quality content - thank you Arjan!!!
@ArjanCodes
@ArjanCodes 11 ай бұрын
Glad you enjoyed it, Mark!
@robboerman9378
@robboerman9378 Жыл бұрын
I love your concise and clear explanations. Going to look into your course!
@matthewnuzzaco2849
@matthewnuzzaco2849 2 жыл бұрын
This was super helpful, I used some of these tips almost immediately.
@aminramazanifar9743
@aminramazanifar9743 2 жыл бұрын
The final note about slot was really great. Thanks
@jma42
@jma42 2 жыл бұрын
I also want to add that you can actually use asdict method from dataclasses and from_dict method from dacite library. It works as it sounds to be and even works in nested dicts/dataclasses!
@aungkyawkyaw9114
@aungkyawkyaw9114 2 жыл бұрын
next level! Thanks Uncle Arjan.
@Andremzsptm
@Andremzsptm 2 жыл бұрын
Excellent video as always @ArjanCodes!
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thanks Andre, glad you liked it!
@nyghl
@nyghl 2 жыл бұрын
It was fun to follow along and learn! Thank you ArjanCodes.
@justinpeter5752
@justinpeter5752 Жыл бұрын
Very good video. I think I learned a lot about classes in this video and I can see where I can use some of these in my code. Well I’m not quite there yet with building classes with multiple inheritance to worry about the issue with slots. But at least I’ll start using slots for performance improvements. Overall, bravo. I’m starting to understand more about Python from a systematical perspective.
@JorgeEscobarMX
@JorgeEscobarMX Ай бұрын
I'm re-watching this video after a year and now I understand the entire thing. Specially the slots parameter, that flew over my head a year ago.😊
@Kirac322
@Kirac322 2 жыл бұрын
Great video Arjan! Learned quite some new things even though I regularly use dataclasses. One suggestion which I encounter quite often in data science: Where and when to properly calculate additional properties (features for my models) after first initialization when there are dependencies between multiple objects, e.g, you have to wait for both to finish initialization, then calculate features. I'm currently working with a hirarchy of dataclasses and calculate these properties in the top level in __post_init__ but am unsure if that's the best way. Thanks!
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thanks so much, glad it was helpful!
@danieleatzeni2437
@danieleatzeni2437 2 жыл бұрын
Hey man, cool video! I saw that when you set frozen=True, you got an error in the __post_init__ (not in the main). Is there a way to use __post_init__ for frozen dataclasses?
@funkmedaddy
@funkmedaddy 2 жыл бұрын
I ran into this issue some time ago, apparently u can't do it directly since that would require you to change the object which is prohibited by the frozen=True statement (according to documentation __setattr__ and __delattr__ methods are added which will throw the error). But u can get around that using object.__setattr__(self, 'field_name', field_value) which is whats happening in the __init__ anyways (i guess it circumvents the __setattr__ method defined in class and calls the definition directly from the object class)
@LeteFox
@LeteFox 2 жыл бұрын
you can use super().__setattr__("_search_string", f"{self.name} {self.address}")
@funkmedaddy
@funkmedaddy 2 жыл бұрын
@@LeteFox yes as long as the super class isn't frozen itself, altho if you're not inheriting from anything it's more concise
@kunedroid3446
@kunedroid3446 2 жыл бұрын
I was just on this issue too... I don't know mate, it seems that python is trying too hard to add features which it was not well planned to and we are ending up with so many esoteric rules/details that learning python by anything other than reading books on "how to adhere to the pre-defined rules/standards of keywords" will soon be impossible..
@ArjanCodes
@ArjanCodes 2 жыл бұрын
I would actually use a different approach altogether if you want a frozen dataclass, but still would like to have a search string like in the example in the video (didn't have time to cover this because the video was already quite long). I wouldn't store the search string in an instance variable, but use a property instead. It would mean that you need to compute the search string on the fly every time though, so it might not be the preferred solution if you need to access it often, but I think it is a lot cleaner than circumventing attribute assignment using __setattr__.
@MarkHimsley
@MarkHimsley 2 жыл бұрын
At 13:28 the exception is that the __post_init__ cannot assign to _search_string in your frozen data class, not that you were setting the name to Arjan after the data object was constructed. So it looks like using __post_init__ to create calculated fields from the initialised data is not going to work.
@MrGeordiejon
@MrGeordiejon Жыл бұрын
Another video explains this and how you can use ```object.setattr(self, value)``` I spotted that too and looked before commenting - 👍
@borisvujicic7817
@borisvujicic7817 2 жыл бұрын
This is great. ArjanCodes, have you thought about doing a video about Python descriptors? I think it could be very useful, as there is no good ones on KZbin.
@johntamplin
@johntamplin 2 жыл бұрын
Take a look at the videos by Corey Schaffer. A very different style, but equally good, in my opinion. I believe he did one on Python descriptors.
@nusermane1076
@nusermane1076 2 жыл бұрын
Incredibly good explanation, will try this for myself tomorrow 👍👍👍
@Giuseppe141992
@Giuseppe141992 10 ай бұрын
Thank you, this channel is an hidden gem.
@ArjanCodes
@ArjanCodes 10 ай бұрын
I'm glad you enjoyed the content!
@_sonicfive
@_sonicfive 7 ай бұрын
00:02 Data classes are aimed at helping write data-oriented classes. 02:14 Defining a str method to customize class printing 04:21 Python data classes make it easy to define classes with instance variables. 06:27 Data classes provide a solution for default values to avoid sharing references. 08:42 Customizing data class initialization and instance variable behavior 10:54 Python data classes provide options to control access and visibility of class attributes 12:58 Python data classes can be made read-only using the 'frozen' argument 14:59 Python 3.10 data classes improvements 17:05 Python data classes use slots for faster instance variable access. 18:57 Python 3.10 introduces performance improvements using union syntax and slots. 20:55 Python's freedom comes with performance trade-offs.
@XCanG
@XCanG 2 жыл бұрын
I use similar thing when working with fastapi, library named SQLModel, what it basicaly is very similar to dataclass, but it has validation from pydantic, so if you, say assign to person with a name type int, like Person(name=1), then you get ValidationError exception. It is more useful in fastapi as it may be used as a mechanism to prevent API being called and executed if provided arguments are not match. And you can have more validation methods in Field, like: le, ge, lt, gt; for list types you may provide min/max range, for strings you may add regex or even something more custom via function. I like it a bit more than just dataclass
@JohnnysaidWhat
@JohnnysaidWhat 2 жыл бұрын
Great video really interesting topic had no idea the data class decorator existed. Just a small suggestion. The top end eq on your voice is a little shrill. DeEsser or small eq to lower the high freq bands. Thank you for this video all the same!
@anthonvanderneut
@anthonvanderneut Жыл бұрын
13:31 Would it not be more useful to freeze the dataclass after calling __post_init__ , so that it errors on assigning "Arjan" instead of setting the (internal attribute) _search_string?
@mattcauth
@mattcauth 2 жыл бұрын
Very, very useful and well done. Thank you!
@f4bglv
@f4bglv 2 жыл бұрын
Excellent video, very informative, concise and enjoyable... as always! Thanks again.
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thanks so much Fabio, glad the content is helpful!
@AndreyPutilov
@AndreyPutilov 2 жыл бұрын
Great explanations! Thanks for the content!
@flynnowen2478
@flynnowen2478 2 жыл бұрын
Love your content Arjan! I've been making an effort to apply your teachings as much as possible in my code. Would you consider doing any future videos on unit testing? I think it would be super useful. I personally use pytest, but you might know better frameworks.
@seans9168
@seans9168 2 жыл бұрын
Great overview and useful examples! Thanks for the video.
@fuadpalchayev7269
@fuadpalchayev7269 Жыл бұрын
Thank you Arjan!👍
@AlanHernandez-mw6xb
@AlanHernandez-mw6xb 2 жыл бұрын
This was actually very entertaining. Thanks!🎃
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thanks so much Alan, glad you liked it!
@abdelkadergnichi6643
@abdelkadergnichi6643 Жыл бұрын
You are awesome man i really appreciate you work bro your videos are so clear and beefy ❤❤
@ArjanCodes
@ArjanCodes Жыл бұрын
Thank you so much! ❤
@АлексейБыков-и6ю
@АлексейБыков-и6ю 2 жыл бұрын
Never tied of recommending your channel to all colleagues and friends 👍
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thank you, glad you like the content :)
@JPy90
@JPy90 2 жыл бұрын
Awesome man.! Just arrive to your channel. Seems amazing
@rablaze
@rablaze 2 жыл бұрын
Love the videos! I was watching a rerun of a Supernatural episode while watching this and the actor that plays Crowley and you kinda like alike lol
@ArjanCodes
@ArjanCodes 2 жыл бұрын
LOL, I see what you mean :).
@presstv
@presstv 2 жыл бұрын
great video. Thanks Arjan
@alejandropereira5680
@alejandropereira5680 2 жыл бұрын
Very useful explanation, to the point and with real use case, really liking these vids
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thanks so much Alejandro, glad you liked it!
@manuelpineda9067
@manuelpineda9067 2 жыл бұрын
Another episode, yes!
@aadithyavarma
@aadithyavarma 2 жыл бұрын
At 13:27, the error is that, it cannot assign the value to _search_string which we made in __post_init__(), so how do we assign values in __post_init__ when the dataclass is Frozen? Do we not declare it in the beginning and create a new member named _search_string only on __post_init__() ?
@korn6657
@korn6657 2 жыл бұрын
I solved it by using Object.__setattr__ on the instance. I would say that it's hacky way to do it, though. Since it means you are doing something wrong if you have to do things like this.
@aadithyavarma
@aadithyavarma 2 жыл бұрын
@@korn6657 Thanks for this tip. And I agree, this really shouldn't be encouraged just because it is possible.
@marcioneto3016
@marcioneto3016 2 жыл бұрын
Amazing video, as usual. Here's a suggestion: how about a video on the infamous Visitor pattern next? Thanks for the amazing content. I really liked the Software Designer Mindset course, by the way.
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thanks for the suggestion, Márcio, and glad to hear you enjoyed the course!
@wv1138
@wv1138 2 жыл бұрын
Good point about a possible strict mode
@thebigdatajedi
@thebigdatajedi 2 жыл бұрын
This comment describes how I feel on a fundamental level. Just very fundamental, having listened to a few videos and without comment to any errata or any deep dive into the tech:: I just want to say that you are completely awesome. I love how you explain things. You are an amazing teacher. Thank you for saving us all!!!
@jakefischer8281
@jakefischer8281 2 жыл бұрын
Arjan you the man!
@DustinRodriguez1_0
@DustinRodriguez1_0 2 жыл бұрын
around 13:40 you introduced the 'frozen' decorator parameter. The example you were giving was, according to what you were saying, that you couldn't change the name after the instance was created... but that's not the error you got. The error you actually got was raised by your __post_init__ function which was assigning the _search_string field. So it seems that using frozen=True breaks your ability to assign fields in __post_init__? Is there a workaround for that or a different way you can have a functionally derived field like that in an immutable 'frozen' dataclass?
@VinceKully
@VinceKully 2 жыл бұрын
There is a workaround. Frozen dataclass will add both a __setattr__() and __delattr__() methods to the class, and this can be used in the __post_init__ dunder method. e.g. object.__setattr__(self, '_search_string', f"{self.name} {self.address}")
@MichaelMorenoPhilosophy
@MichaelMorenoPhilosophy 2 жыл бұрын
I think 5:15 is wrong as those are not class variables, they're member annotations as per PEP 526. Initializing them on the same line would make it them class variables though.
@fvbakel
@fvbakel 2 жыл бұрын
Great overview of the dataclass. I wonder what your view is on binding the dataclass to a SQL database. Is there an easy way? It seems that the Django and sqlalchemy methods are not compatible with the dataclass? Further more, what do you think about nested dataclass and the impact on hashing?
@TurboLoveTrain
@TurboLoveTrain Жыл бұрын
Great video. I graduated in 2000 with a computer science degree and am amazed to see how the language evolved... and I don't think for the better. I was always amused at the Object vs. Class vs. data structure distinctions because I work almost entirely in recursion these days the object is the data structure definition and the object is an instance the class...and functions are everywhere. The most important thing you talk about in this video is variable initialization--and you explain it amazingly well!
@NicolasDumazet
@NicolasDumazet 2 жыл бұрын
At 13:27 it looks like the error you get is not because of mutation of a final dataclass after init. The trace points to __post_init__ unhappiness during the initial Person() construction
@lukasbelck4514
@lukasbelck4514 2 жыл бұрын
Great content as always!
@ArjanCodes
@ArjanCodes 2 жыл бұрын
Thank you, Lukas!
@yiyangzhang608
@yiyangzhang608 2 жыл бұрын
very practical and useful, help me a lot, thank you🍗
@ChrisBNisbet
@ChrisBNisbet 2 жыл бұрын
Hmm, freezing the data class resulted in an error when trying to set up _search_string, which is probably not what you want. Did I read the error output correctly?
@hisamsowaib956
@hisamsowaib956 2 жыл бұрын
Hope you can create a video on how we can use dataclasses with data coming from db. I think that is a more real life scenario. Thanks a lot.
@SystemSigma_
@SystemSigma_ 2 жыл бұрын
Nice overview of dataclasses.. Next, we need an extensive video about the testing frameworks and mocking for TDD!
@thallysrc
@thallysrc 2 жыл бұрын
i simply love your channel
@nedegt1877
@nedegt1877 2 жыл бұрын
I think it's better to have more in depths Python video's like this one instead of trying to limit your options. I mean if you search for Python you will find 1000's of "Hello World" Tutorials, some "How To's" but little technical explanation of the language it self like your video. I believe that if you can learn to master the language you can also master the challenges a language gives you. But since most Python programmers are "Self taught programmers" their knowledge is mostly limited to the sources they managed to learn from. Knowing the functions or having a list of the language API it self is not enough. Some examples of use cases like your video are very welcome. Thanks!
A Simple & Effective Way To Improve Python Class Performance
12:40
The Ultimate Guide to Writing Classes in Python
25:39
ArjanCodes
Рет қаралды 122 М.
She made herself an ear of corn from his marmalade candies🌽🌽🌽
00:38
Valja & Maxim Family
Рет қаралды 18 МЛН
Why You Should Think Twice Before Using Returns in Python
21:27
ArjanCodes
Рет қаралды 47 М.
5 Signs of an Inexperienced Self-Taught Developer (and how to fix)
8:40
Python Data Classes Are AMAZING! Here's Why
16:11
Tech With Tim
Рет қаралды 87 М.
Python dataclasses will save you HOURS, also featuring attrs
8:50
UV for Python… (Almost) All Batteries Included
17:35
ArjanCodes
Рет қаралды 81 М.
25 nooby Python habits you need to ditch
9:12
mCoding
Рет қаралды 1,8 МЛН
Avoid These BAD Practices in Python OOP
24:42
ArjanCodes
Рет қаралды 80 М.
15 Python Libraries You Should Know About
14:54
ArjanCodes
Рет қаралды 408 М.
Protocol Or ABC In Python - When to Use Which One?
23:45
ArjanCodes
Рет қаралды 206 М.
Attrs, Pydantic, or Python Data Classes?
17:10
ArjanCodes
Рет қаралды 89 М.