From d0b81c82fbca31d49ff276057f9859b378712e30 Mon Sep 17 00:00:00 2001 From: Brandon Rodriguez <brodriguez8774@gmail.com> Date: Fri, 29 Nov 2019 13:47:11 -0500 Subject: [PATCH] Add nested class references --- documents/references.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/documents/references.md b/documents/references.md index b0a9392..45617c2 100644 --- a/documents/references.md +++ b/documents/references.md @@ -55,6 +55,20 @@ During that class, I did a "Graph Isomorphism" project. Project can be found at I tried to reference it minimally, but I definitely did reference it for "automatic naming" and "Visual Graph Display" functionality. +### Nested Classes +A problem I noticed after using this library is that some of the function call names weren't very intuitive/easy to +remember. But short of having a better way to "group" related functions, I wasn't sure how to improve upon this. + +After implementing nested classes in my "Linear Programming" solver project, I realized this issue may be addressed with +nested classes. The logic for using nested classes is fairly close to the original logic, while allowing all node and +edge functions to be grouped together in a (hopefully) more intuitive manner. + +Inspiration came from how Django handles "model query managers" with the "models.objects.<query>" syntax. + +References for how nested classes work are: +* <https://stackoverflow.com/questions/719705/what-is-the-purpose-of-pythons-inner-classes> +* <https://www.datacamp.com/community/tutorials/inner-classes-python> + ### General Class Inheritance <https://www.digitalocean.com/community/tutorials/understanding-class-inheritance-in-python-3> @@ -68,13 +82,6 @@ classes, limiting access to desired child logic. The solution was similar to <https://stackoverflow.com/a/7840956>. The syntax I needed was a bit different, but after some trial and error, the general idea worked. -### Circular Dependency Fix -The Node and Edge classes each import each other, so that they can check that they are being passed values of type -Node/Edge. Unfortunately, this appears to cause a circular dependency, which causes errors when using the standard -`from x import y` syntax. - -More about this, as well as a solution is found at <https://stackabuse.com/python-circular-imports/>. - ### Python "Private" Variables - Single VS Double Underscore <https://stackoverflow.com/questions/6930144/underscore-vs-double-underscore-with-variables-and-methods> -- GitLab