Im very happy because you did the impelmentation. I think I understood classes now. I always had problems with classes. But you said you doesnt wanna do the whole impelmentation cuz it would be very long. I van understand this. But ön the future, maybe van you make a video about web scraping(Beautifulsoup,selenium for example) for a new topic. Thanks.
Hi Tim. Loving this series, what are you plans for it? Are you going to go right through to the end product? A gui and debugging and such? To learn the whole process cohesively would be awesome. Again this series is brilliant.
I rarely comment on videos but had to drop in an say: Thank you for all your efforts Tim, your videos are incredibly insightful! This series has been a huge value add and would love to see it continued. Keep up the great work!
I've been learning from Tim for a while now. This series is by far the most important thing I have learnt in coding. I knew about classes but could never really figure out how to implement them in a real situation. Thank you so much! I'd love to see how you implement it in a GUI & database.
Hey Tim! Great video, as always. I have a tip for you; when checking if the address is a list (around 13:45), you can, instead of checking for a list, check for a Sequence. I can easily imagine a scenario where you would not pass a list to the address parameter, but a tuple; in that case, it should still be able to populate the addresses list. You can import Sequence as such: from collections.abc import Sequence
Tim, you really have the skills of a great teacher! You do know how to make things easier to understand by walking us through the details. Thank you so much for your videos!
Man, this is exactly what I was looking for ; Hope it's not the end of the series, I'd love to see the whole process until the end product. Thanks a lot Tim.
I'm learning Python mostly with your videos, for like 3 weeks or a little bit more, and I can tell you are doing a great job! Python is the _first_ language that I understand how it works and why it works, how to do OOP programs, how to plan to program, how to *think* like a programmer, etc... Thank you for your content, I hope you won't stop making videos in a while! :D
Hey, Tim! Could we get an update to this series? Part 3 could be fixing up any holes in the process that have been identified, writing some test cases to start seeing some implementation, and updating the UML in an actual software design program/tool such as Lucidchart or Gliphy with any new methods/fields added to the diagram. Part 4 could be hooking it up to a framework backed by a DB to actually see the code working/saving state in a real environment. And part 5 could be creating a UI (I know you’ve done some stuff with react recently) to interact with it all. Maybe even a part 6 where you show how to deploy it to Azure/AWS or another hosted environment. I think the people want it… Honestly, if this project is dead, starting from the beginning would be okay, too. It might even be better if you don’t have access to these files anymore. Like you did in this series, you could start a project from a feature story and use what you’ve learned from working in the corporate world to go from start to finish on a full project. I think it would be a particularly worthy adventure for others that are still learning and even people that are already in the industry to see the full front to back process of what software engineers do on a daily basis. It would give your entire audience a snippet of what they are interested in, letting full stack engineers see how it works, front end folks the ability to appreciate the backend and vice versa.
This tutorial has given me the confidence to begin making 'resume ready' projects. So far I've only created tiny projects with a few functions in them so far.
I did actually! I had forgotten about this comment but looking back on it I remember this being a turning point in my self teaching journey. I'm now employed at a company called RoleModel software!
Hey Tim I’m a high school sophomore and I’ve been teaching myself coding since 6th grade. I love ur channel so much as I’ve learned from it so much. I’ve learned pygame from u, sockets from u, pretty much all my python knowledge from u. Ur the best Tim!
Hey Tim! Thanks for your video, it was quite informative. Nevertheless I have some remarks on the code you have written. 1. Circular imports: In your code I see some circular imports. You import Person in Enroll and you import Enroll in Person. Next to that you import Courses in Enroll, and you import Enroll in Courses. Note that this code will therefore never work. Circular imports are usually a sign of bad software design, and therefore I lose trust in the design choices you have made (which is kind of sad, because these two video's are all about how to design your software). Tip: always test your implementation. 2. Type checking in code: Others have mentioned it already, but checking the types of all inputs is not necessary, because it clutters your code very badly. Only in case you receive an input from a client of which you don't have control of yourself it might be useful. You can use type hints in Python. Although they are not enforced at runtime, it can help you while developing, because your linter can inform you about issues.
While this was a nice video, I'd love to see a full implementation with a working database because I'd love to learn how to change these classes into actual database tables and columns.
Hey Tim! Great video man and a huge fan of your channel! I have learned so much about not only Python programming but about other programming concepts as well (more-so than any other channel I have viewed)! And I believe I am with a few of the other comments about requesting a video that utilizes these new classes that you made in this video. It has been quite interesting and beneficial to see these steps played out from the very beginning and how each step is being handled. I believe that a video that shows a program that utilizes what was made in this video will be the bees-knees and a great conclusion to this Software Design tutorial! Great stuff and keep it up man!
Thanks that is a really good video. As well as the first part. What I would add in the end - a small section (up to 5 minutes) where we show like the system work: create user, create professor, enroll to course, etc. So there would be some example of the data flow in the application.
Extremely intelligible/easy to follow... also I learned a few ways to shorten the processing time of adding lists of info into the instance of a class at once rather than iteratively
I have some points that will make the design better and cleaner. 1- Instead of adding multiple addresses in an array, you can create a new class that connects the user addresses with the system addresses. 3- I think if we create a different class to connect the course with all professors that will teach the course. It would be a better design
Love these kinds of videos! Especially since I feel like I lack this fundamental skill, and you just demonstrated how easily it can be done. Thanks Tim 🥳 If there is time and demand, I would personally love if you actually implemented this as a web app, preferably with Django + React like you did with your music player, but just Django w/ templates would be great as well. Yet again, many thanks for your simple yet effective teaching videos 🎉
Very Nice Tim. You have a very impressive library of videos as well as an unbelievable wealth of knowledge and wisdom that belies your age. Keep up the good work and thank you for inspiring me on your 5 things to make dough video
Great video Tim! In the constructor in the Person class, instead of checking the type of the "adress" param and raising if incorrect, you could use a type hint. Something along the lines of: from typing import List Class Person: def __init__(... adress : Adress or List[Adress])
Type hinting isn't available at run-time, unfortunately. You can use tools like mypy to check the "flow" of data through your code while you are developing it though.
1. I want to know your thoughts about the following: I've read if you need a class that needs only data members(and not any method), probably you should use namedtuple instead of class 2. It seems you missed a testcase: If user inputs an empty list in constructor where you need atleast one element in the list 3. Should we expect some unit tests for these in upcoming videos ? BTW, thanks for great content 😄
In python you can use Data Classes[1] to store named data. Data Classes is kinda similar to struct of C. Not having to use indexes to access the data greatly improves readability. 1.docs.python.org/3/library/dataclasses.html
@Harsh Raj, jus to build on what @Chico Noia said, Data Classes would probably be the best choice for an object that holds only data and no methods but are only available in Python 3.7+. If you are using an earlier version then named tuples are more performant and would be preferred.
It is not generally recommended to do type checking on objects in dynamically typed languages unless you're building a software API that others will use. If you're building software for a company (or yourself), it's better to trust what is given in the constructor. The reason is because of how much you are polluting your code with these checks (which most of the time will be ignored since you're giving the correct types when building the software), which makes readability that much harder.
Not to mention, a list with one element in it is no worse than simply passing that element. For loops will still work, they will just make only one iteration. So any code you write for the list will still work if it only has one element.
@@techtutorials8812 In Python at least, for-loops don't work like that. If the object passed is iterable, then a for-loop will iterate through that object, rather than treating it as a collection with one element. If not, a TypeError is raised. Maybe to tidy things up for readability's sake, you could put some type-checking functionality into the superclass or an interface class, so it doesn't clutter the subclass code?
True, if you send the wrong thing in you will get an exception thrown anyway, better then to make sure to handle the error like logging to a file and exiting gracefully (closing files, releasing memory, etc)
@@stecarey6538 If I remember correctly (it being a year since my comment) the problem being discussed here is checking for invalid arguments (e.g. a string rather than a list containing strings). You have to code for the event that the function is passed the string literal 'test' rather than ['test'], otherwise it will iterate over the string rather than the list object. This may be less of an issue now with type hints (I'm a little out of the loop, as it were, as my work hasn't required much programming lately).
Thanks for the great tutorial. I hope you'll continue with the next step. I was not able to use "raise Error...", so used "raise AttributeError…" instead.
Guys, like the video, so Tim does more of those awesome vids in the future! Edit: I don't know if it's just me but I feel like I'm hearing a little "pop" noise on my right headphone during this video, anyone else who's getting the same little noise?
Hey, Thank you so much for creating this through out these video is best to understand system design. Can you please complete this design into required working system. It can be a console based application. Please it will be a huge favor
I think it would be best if the relationship between courses and professors is unidirectional. A course must have a professor teaching it, therefore Course must have reference to the Professor. The professor can have many courses and may change overtime. To avoid having to make two changes, e..g one for the Course class and one for the Professor class, it makes sense to make the change in the Course class only. This keeps the design simple, avoid spaghetti code.
Hi Tim, This series is awesome. Are you planning to move forward with it? If you would create an episode where you connect your project with database and then some GUI in Django that would be great :)
Hi Tim, thank you for a great tutorial. It'd be great if you can make a whole project, including adding gui and connecting to database. I want to learn how to implement an entire project with python. Thanks very much!
Tutorials like this and the first one would be great written in pseudocode then the pseud code turned into comments then the programming language syntax added between the comments. I think that would be a great way to teach programming.
Achievement Unlocked: Typo expert (make same type without auto complete in less than a second) "import cousre from Cousre" :) by the way, any luck to make sample product with connections to sqlite? there are many comments mentioning about it. and it is a really great work
In the person class since you already did the error checking in add_adress you should have just done for i in adress add_adress(adress) to repeat less code and make it cleaner
Bro your video is super cool and What I wanted to know I learned after watching your video thank you Brother it's a great video But you sometime misspell the spellings like cousre = course.
- Maybe when you check for raise you should also subtract the bonus when the teacher leaves the 4th course, otherwise that raise will be enacted forever. - Maybe i remember incorrectly but you could define a parameter in class that could also be a method. this could work for isCanceled
I think that there's a bug at 19:35. I could very easily be wrong but I think that line 14 - "self.enrolled.append(enroll)" should be within an 'else' statement because if it's not, it will execute regardless of whether or not there was an error, and enroll will be appended to the list regardless of whether or not it's of the correct type. Once again, I could be wrong.
If there is an error the program will crash and even if an append operation happened (which it shouldn’t) memory would be flushed. So no, I don’t think there is a bug, but good thought!
Raising an error immediacy exits the function, so if you hit a raise line you can be sure that the rest of the body of the method won’t execute (unless you’re using a try except finally block )
@@TechWithTim Thanks for replying. I was actually gonna write back/delete my comment because as soon as I finished the video, I opened the documentation.
Thank you for the part 2 and completing the circle. If you are going to continue this series (or begin something related) , would you consider "Class inheritance VS Object composition" topic?
I have a few considerations... (1) On 2:15 you say that Person is an abstract base-class. How can it be so, if it has attributes (ABCs can't have them) and doesn't have any abstract methods (ABCs must have at least one of them)? As far as I can see it's just a concrete parent class for Student and Professor. (2) On 3:35 you call the __init__ method of the class Address its constructor, when in fact the constructor of classes in Python is the __new__ method. It creates an instance and returns an object that is, then, initialized by the __init__ method before being passed back to the caller. (3) The initialization of the attribute self.addresses of class Person (as well as other classes you created) may lead to problems. You should not assign mutable types to instance attributes that way, or else two instances of the class Person that have not been initialized with addresses will actually have the same address. The reason for this is that the the attribute self.addresses of both will reference the same object (the same default empty list), so that a modification made to the list object by one instance will affect all future instances created by calls to the class. It's a well known problem. More info in this article: effbot.org/zone/default-values.htm (4) In UML, the use of + and - signs is a reference to object visibility (public and private, respectively), not as a means to differentiate instance attributes from instance methods. You should do that with horizontal line inside the class instead, making a division between attributes and methods.
Hi Tim, Nice video! Well explained!😁 When do you think it starts the phase of Analysis?And when it ends and begin the phase of design? I'm making and accountant system using OOP like this video and I need some advices or ideas, please Could you give some examples of reusing software?
Hello Tim. These two episodes dedicated to software design have been very useful. Any suggested books that address this specific topic, that is good practises for UML diagram design and code implementation?
HI guys if you are watching this yout can already define what type you are using by using like this function thisIsAfunction(self,professor:Professor) there no need to check for instance.
sir i please you to make a video on graph data structure and some of its related algorithms especially in python.please.because i searched all over the internet but no one has explained like you.i have covered all the data structure in python except this graph.so i beg you to make the video on it. and i will be waiting for you response as a video.sir i am stuck. i cant move foreword without learning it.so please upload it as soon as possible.....
Great video, Python does offer some type checking features so it's worth mentioning in a subsequent video e.g. docs.python.org/3/library/typing.html you can also use things like mypy to check types.
There needs to be a 3rd part to this tutorial. How do you actually implement this? Even a basic implementation. If i try importing student in another file, I get a circular import error.
Yo Tim! Where are the videos #3 and #4 for the front and back end of this system? Would be great if you could do that... A beginner-friendly series of intermediate level stuff, going from idea to end product.
You guys asked for it, so here it is!! If you appreciate this effort please leave a LIKE and SUBSCRIBE :)
Thank you so much for this!
Im very happy because you did the impelmentation. I think I understood classes now. I always had problems with classes. But you said you doesnt wanna do the whole impelmentation cuz it would be very long. I van understand this. But ön the future, maybe van you make a video about web scraping(Beautifulsoup,selenium for example) for a new topic. Thanks.
Amazing man! So glad you did this!
Yeah you made a mistake I see. You should put all of that in one table. How many times have you heard that before.
Thank you so much for this. Excellent stuff
Hi Tim. Loving this series, what are you plans for it? Are you going to go right through to the end product? A gui and debugging and such? To learn the whole process cohesively would be awesome. Again this series is brilliant.
I wish he could see this and revive it, and let us have a part 3 at January 2021.
Boosted after 3 years
Tim out here working his ass off for all of us. Much love!
It is refeshing to see things constructed from the beginning and you did a great job at explaining it!
I rarely comment on videos but had to drop in an say: Thank you for all your efforts Tim, your videos are incredibly insightful! This series has been a huge value add and would love to see it continued. Keep up the great work!
I've been learning from Tim for a while now. This series is by far the most important thing I have learnt in coding. I knew about classes but could never really figure out how to implement them in a real situation. Thank you so much! I'd love to see how you implement it in a GUI & database.
Hey Tim! Great video, as always.
I have a tip for you; when checking if the address is a list (around 13:45), you can, instead of checking for a list, check for a Sequence.
I can easily imagine a scenario where you would not pass a list to the address parameter, but a tuple; in that case, it should still be able to populate the addresses list. You can import Sequence as such:
from collections.abc import Sequence
very good tip! Thanks
Tim, you really have the skills of a great teacher! You do know how to make things easier to understand by walking us through the details.
Thank you so much for your videos!
Man, this is exactly what I was looking for ; Hope it's not the end of the series, I'd love to see the whole process until the end product. Thanks a lot Tim.
I'm learning Python mostly with your videos, for like 3 weeks or a little bit more, and I can tell you are doing a great job! Python is the _first_ language that I understand how it works and why it works, how to do OOP programs, how to plan to program, how to *think* like a programmer, etc...
Thank you for your content, I hope you won't stop making videos in a while! :D
Hey, Tim! Could we get an update to this series? Part 3 could be fixing up any holes in the process that have been identified, writing some test cases to start seeing some implementation, and updating the UML in an actual software design program/tool such as Lucidchart or Gliphy with any new methods/fields added to the diagram. Part 4 could be hooking it up to a framework backed by a DB to actually see the code working/saving state in a real environment. And part 5 could be creating a UI (I know you’ve done some stuff with react recently) to interact with it all. Maybe even a part 6 where you show how to deploy it to Azure/AWS or another hosted environment. I think the people want it…
Honestly, if this project is dead, starting from the beginning would be okay, too. It might even be better if you don’t have access to these files anymore. Like you did in this series, you could start a project from a feature story and use what you’ve learned from working in the corporate world to go from start to finish on a full project. I think it would be a particularly worthy adventure for others that are still learning and even people that are already in the industry to see the full front to back process of what software engineers do on a daily basis. It would give your entire audience a snippet of what they are interested in, letting full stack engineers see how it works, front end folks the ability to appreciate the backend and vice versa.
you don't realize how important this lecture is, thank you. I have never found anything on program design.
This tutorial has given me the confidence to begin making 'resume ready' projects. So far I've only created tiny projects with a few functions in them so far.
Hey ! What's up since this comment? Have you built anything ? 😊
I did actually! I had forgotten about this comment but looking back on it I remember this being a turning point in my self teaching journey. I'm now employed at a company called RoleModel software!
exactly what I was looking for! a course that goes from the brief all the way through to writing the classes. Thanks!
Hello Tim...
I have been watching your videos for a very long time.
I love you Flask Rest API tutorial so much.
Thanks man...you're the best.
Hey Tim I’m a high school sophomore and I’ve been teaching myself coding since 6th grade. I love ur channel so much as I’ve learned from it so much. I’ve learned pygame from u, sockets from u, pretty much all my python knowledge from u. Ur the best Tim!
Hey Tim! Thanks for your video, it was quite informative. Nevertheless I have some remarks on the code you have written.
1. Circular imports: In your code I see some circular imports. You import Person in Enroll and you import Enroll in Person. Next to that you import Courses in Enroll, and you import Enroll in Courses. Note that this code will therefore never work. Circular imports are usually a sign of bad software design, and therefore I lose trust in the design choices you have made (which is kind of sad, because these two video's are all about how to design your software). Tip: always test your implementation.
2. Type checking in code: Others have mentioned it already, but checking the types of all inputs is not necessary, because it clutters your code very badly. Only in case you receive an input from a client of which you don't have control of yourself it might be useful. You can use type hints in Python. Although they are not enforced at runtime, it can help you while developing, because your linter can inform you about issues.
I learned a lot from this.
1) Classes are quintessential
2) You need grammarly
thank you for this invaluable course. Next step is to link this to GUI (PyQT) and a database. This will make it a self sustained project.
While this was a nice video, I'd love to see a full implementation with a working database because I'd love to learn how to change these classes into actual database tables and columns.
i agree, it would be nice :)
me either
🙋🏾♂️ Count me in
Has anyone come across another resource which shows the final implementation? We are just missing the final piece of the puzzle!
AGREED
Hey Tim! Great video man and a huge fan of your channel! I have learned so much about not only Python programming but about other programming concepts as well (more-so than any other channel I have viewed)! And I believe I am with a few of the other comments about requesting a video that utilizes these new classes that you made in this video. It has been quite interesting and beneficial to see these steps played out from the very beginning and how each step is being handled. I believe that a video that shows a program that utilizes what was made in this video will be the bees-knees and a great conclusion to this Software Design tutorial! Great stuff and keep it up man!
Thanks that is a really good video. As well as the first part.
What I would add in the end - a small section (up to 5 minutes) where we show like the system work: create user, create professor, enroll to course, etc. So there would be some example of the data flow in the application.
Extremely intelligible/easy to follow... also I learned a few ways to shorten the processing time of adding lists of info into the instance of a class at once rather than iteratively
I have some points that will make the design better and cleaner.
1- Instead of adding multiple addresses in an array, you can create a new class that connects the user addresses with the system addresses.
3- I think if we create a different class to connect the course with all professors that will teach the course. It would be a better design
Love these kinds of videos! Especially since I feel like I lack this fundamental skill, and you just demonstrated how easily it can be done. Thanks Tim 🥳
If there is time and demand, I would personally love if you actually implemented this as a web app, preferably with Django + React like you did with your music player, but just Django w/ templates would be great as well.
Yet again, many thanks for your simple yet effective teaching videos 🎉
I'm learning this at school, so it's quite nice to see it actually be done.
Me too! 😄
I haven't even watched the first one and I have dropped a like
WE NEED MORE VIDEOS LIKE THIS!!!
Very Nice Tim.
You have a very impressive library of videos as well as an unbelievable wealth of knowledge and wisdom that belies your age.
Keep up the good work and thank you for inspiring me on your 5 things to make dough video
This is a great series. there is a lack of similar content with good enough quality in yt
Part 3 or new project please. This was awesome!
Please continue this series tim
Great video Tim!
In the constructor in the Person class, instead of checking the type of the "adress" param and raising if incorrect, you could use a type hint. Something along the lines of:
from typing import List
Class Person:
def __init__(... adress : Adress or List[Adress])
Type hinting isn't available at run-time, unfortunately. You can use tools like mypy to check the "flow" of data through your code while you are developing it though.
Love the videos, Tim. I have learned a lot from you over the past 6 weeks of my coding journey. Anyway cool vid
please do a whole implementation man! I lack design skills which hinder my progress in my career so stuff like this helps thank you :D
1. I want to know your thoughts about the following:
I've read if you need a class that needs only data members(and not any method), probably you should use namedtuple instead of class
2. It seems you missed a testcase: If user inputs an empty list in constructor where you need atleast one element in the list
3. Should we expect some unit tests for these in upcoming videos ?
BTW, thanks for great content 😄
For 1, probably? I haven’t heard that before but just reading your comment makes perfect sense.
2. Yes, you’re right. I did!
3. Unlikely
@@TechWithTim can you please write unit tests for this?. I wanted to learn how to write unit tests
In python you can use Data Classes[1] to store named data. Data Classes is kinda similar to struct of C. Not having to use indexes to access the data greatly improves readability.
1.docs.python.org/3/library/dataclasses.html
@Harsh Raj, jus to build on what @Chico Noia said, Data Classes would probably be the best choice for an object that holds only data and no methods but are only available in Python 3.7+. If you are using an earlier version then named tuples are more performant and would be preferred.
yes, i read that from the book "fluent python", using namedtuple
Like first one, very well done and thank you very much!!! Would love to see exactly this with Scala & Databricks :D
It is not generally recommended to do type checking on objects in dynamically typed languages unless you're building a software API that others will use. If you're building software for a company (or yourself), it's better to trust what is given in the constructor. The reason is because of how much you are polluting your code with these checks (which most of the time will be ignored since you're giving the correct types when building the software), which makes readability that much harder.
Not to mention, a list with one element in it is no worse than simply passing that element. For loops will still work, they will just make only one iteration. So any code you write for the list will still work if it only has one element.
@@techtutorials8812 In Python at least, for-loops don't work like that. If the object passed is iterable, then a for-loop will iterate through that object, rather than treating it as a collection with one element. If not, a TypeError is raised. Maybe to tidy things up for readability's sake, you could put some type-checking functionality into the superclass or an interface class, so it doesn't clutter the subclass code?
True, if you send the wrong thing in you will get an exception thrown anyway, better then to make sure to handle the error like logging to a file and exiting gracefully (closing files, releasing memory, etc)
@@csmcstrsshd Would it not just work like this?
>>> test = ['test']
>>> for i in test:
print(i)
test
@@stecarey6538 If I remember correctly (it being a year since my comment) the problem being discussed here is checking for invalid arguments (e.g. a string rather than a list containing strings). You have to code for the event that the function is passed the string literal 'test' rather than ['test'], otherwise it will iterate over the string rather than the list object. This may be less of an issue now with type hints (I'm a little out of the loop, as it were, as my work hasn't required much programming lately).
Thanks for this Tim. I found it helpful
Hey Tim,
I really love your content, teaches me so much.
Keep it up!
Thanks for the great tutorial. I hope you'll continue with the next step.
I was not able to use "raise Error...", so used "raise AttributeError…" instead.
Thank you, Tim. This is actually useful in web development (models).
Love from India ✌
Thanks Tim, this is really helpful! Would be very keen to watch future videos on full implementation of this code, if that is on the cards!
Guys, like the video, so Tim does more of those awesome vids in the future!
Edit: I don't know if it's just me but I feel like I'm hearing a little "pop" noise on my right headphone during this video, anyone else who's getting the same little noise?
Yeah, any time there's a louder than average sound
Nice videos, adding gui is make alot knowledge
*Yes this was important, I couldn't sleep for weeks 😐*
Cool, I have been waiting for this... Thanks Tim
This tutorials are the best! Thanks!
Hey, Thank you so much for creating this through out these video is best to understand system design. Can you please complete this design into required working system. It can be a console based application. Please it will be a huge favor
Awesome course 👌👌👌
Are you going to implement a database & a UI for this system ?
Tim is of the GOAT
Please continue this
It's great, thanks a lot, direct and simple.
If possible please continue this series.
Great man, you are brilliant!
I think it would be best if the relationship between courses and professors is unidirectional. A course must have a professor teaching it, therefore Course must have reference to the Professor. The professor can have many courses and may change overtime. To avoid having to make two changes, e..g one for the Course class and one for the Professor class, it makes sense to make the change in the Course class only. This keeps the design simple, avoid spaghetti code.
This is a comfy video to watch with some coffee or hot chocolate
Thanks !!, hoping more of these kind of videos ..
Hi Tim, This series is awesome. Are you planning to move forward with it? If you would create an episode where you connect your project with database and then some GUI in Django that would be great :)
Second!, bruh u are just awesome(i am 12 year old and i love your vids, also i am learning python)
i learned something new today
Came back after a year
Hey Tim , as always your vds are Fing great. But this one , I learned a bunch of new things and sort a lot of things that I am being confused
Hi Tim, thank you for a great tutorial. It'd be great if you can make a whole project, including adding gui and connecting to database. I want to learn how to implement an entire project with python. Thanks very much!
Tutorials like this and the first one would be great written in pseudocode then the pseud code turned into comments then the programming language syntax added between the comments. I think that would be a great way to teach programming.
Man you're awesome
Achievement Unlocked: Typo expert (make same type without auto complete in less than a second)
"import cousre from Cousre" :)
by the way, any luck to make sample product with connections to sqlite? there are many comments mentioning about it.
and it is a really great work
great tutorial mate, thank you very much!
Great Content...
In the person class since you already did the error checking in add_adress you should have just done for i in adress add_adress(adress) to repeat less code and make it cleaner
Bro your video is super cool and What I wanted to know I learned after watching your video thank you Brother it's a great video But you sometime misspell the spellings like cousre = course.
Thanks for the video!! Love it!!
- Maybe when you check for raise you should also subtract the bonus when the teacher leaves the 4th course, otherwise that raise will be enacted forever.
- Maybe i remember incorrectly but you could define a parameter in class that could also be a method. this could work for isCanceled
you are amazing man thank you so much
Thank you very much Tim
Thank you for using python
will we see more of software design series?(say yess!!)
I think that there's a bug at 19:35. I could very easily be wrong but I think that line 14 - "self.enrolled.append(enroll)" should be within an 'else' statement because if it's not, it will execute regardless of whether or not there was an error, and enroll will be appended to the list regardless of whether or not it's of the correct type. Once again, I could be wrong.
The same thing at 25:00
If there is an error the program will crash and even if an append operation happened (which it shouldn’t) memory would be flushed. So no, I don’t think there is a bug, but good thought!
Raising an error immediacy exits the function, so if you hit a raise line you can be sure that the rest of the body of the method won’t execute (unless you’re using a try except finally block )
@@TechWithTim Thanks for replying. I was actually gonna write back/delete my comment because as soon as I finished the video, I opened the documentation.
Hey Tim! Can you please continue this series where you show the usage of the system + designing a Front-end UI for the same. Thanks!
Thank you 😊
Thank you for the part 2 and completing the circle. If you are going to continue this series (or begin something related) , would you consider "Class inheritance VS Object composition" topic?
Thanks TIm.
Please revive this series
Great series!! Could you make another episode for the gui? Thanks a lot for these videos!
THAT"S EXACTLY WHAT WE NEED!! A PERFECT ENDING TO WEEK!! (^_^)
Huge Fan Tim :)
I have a few considerations...
(1) On 2:15 you say that Person is an abstract base-class. How can it be so, if it has attributes (ABCs can't have them) and doesn't have any abstract methods (ABCs must have at least one of them)? As far as I can see it's just a concrete parent class for Student and Professor.
(2) On 3:35 you call the __init__ method of the class Address its constructor, when in fact the constructor of classes in Python is the __new__ method. It creates an instance and returns an object that is, then, initialized by the __init__ method before being passed back to the caller.
(3) The initialization of the attribute self.addresses of class Person (as well as other classes you created) may lead to problems. You should not assign mutable types to instance attributes that way, or else two instances of the class Person that have not been initialized with addresses will actually have the same address. The reason for this is that the the attribute self.addresses of both will reference the same object (the same default empty list), so that a modification made to the list object by one instance will affect all future instances created by calls to the class. It's a well known problem. More info in this article: effbot.org/zone/default-values.htm
(4) In UML, the use of + and - signs is a reference to object visibility (public and private, respectively), not as a means to differentiate instance attributes from instance methods. You should do that with horizontal line inside the class instead, making a division between attributes and methods.
you are amazing!!
exccellent tutorial. would have been nice to have the pseudo code first, before codding
Will you continue this mini project? Maybe a ui and db?
O perfect I was looking for something like that :D
I am really strugling with python, but this ,this is what i needed, @Tim what now, how can i add like a UI to see the functionality clearly
This is really useful. Do you think you can make one that involves graphics or some computation?
Hi Tim, Nice video! Well explained!😁
When do you think it starts the phase of Analysis?And when it ends and begin the phase of design?
I'm making and accountant system using OOP like this video and I need some advices or ideas, please
Could you give some examples of reusing software?
Hello Tim. These two episodes dedicated to software design have been very useful. Any suggested books that address this specific topic, that is good practises for UML diagram design and code implementation?
HI guys if you are watching this yout can already define what type you are using by using like this function thisIsAfunction(self,professor:Professor) there no need to check for instance.
sir i please you to make a video on graph data structure and some of its related algorithms especially in python.please.because i searched all over the internet but no one has explained like you.i have covered all the data structure in python except this graph.so i beg you to make the video on it. and i will be waiting for you response as a video.sir i am stuck. i cant move foreword without learning it.so please upload it as soon as possible.....
thank you!
Great video, Python does offer some type checking features so it's worth mentioning in a subsequent video e.g. docs.python.org/3/library/typing.html you can also use things like mypy to check types.
Python doesn't offer type checking at run-time. You can use type hints and tools like mypy to test the flow of your types during development, however.
@@sarcasmasaservice true but it is a step in the right direction for type safety.
There needs to be a 3rd part to this tutorial. How do you actually implement this? Even a basic implementation. If i try importing student in another file, I get a circular import error.
Yo Tim! Where are the videos #3 and #4 for the front and back end of this system? Would be great if you could do that... A beginner-friendly series of intermediate level stuff, going from idea to end product.