Using a class instance inside itself





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















Is it considered bad practice to use a class inside itself?
For instance:



class Foo:
def __init__(self, b=None):
"""
b (Foo|None): instance of Foo.
"""
self.a = 'hello'
if isinstance(b, Foo):
print(b.a)









share|improve this question





























    0















    Is it considered bad practice to use a class inside itself?
    For instance:



    class Foo:
    def __init__(self, b=None):
    """
    b (Foo|None): instance of Foo.
    """
    self.a = 'hello'
    if isinstance(b, Foo):
    print(b.a)









    share|improve this question

























      0












      0








      0








      Is it considered bad practice to use a class inside itself?
      For instance:



      class Foo:
      def __init__(self, b=None):
      """
      b (Foo|None): instance of Foo.
      """
      self.a = 'hello'
      if isinstance(b, Foo):
      print(b.a)









      share|improve this question














      Is it considered bad practice to use a class inside itself?
      For instance:



      class Foo:
      def __init__(self, b=None):
      """
      b (Foo|None): instance of Foo.
      """
      self.a = 'hello'
      if isinstance(b, Foo):
      print(b.a)






      python






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 3 at 21:02









      BiBiBiBi

      1,89911436




      1,89911436
























          2 Answers
          2






          active

          oldest

          votes


















          3














          No. There's no point in going out of your way to use a class inside itself but if it solves your problem then go for it. For example python's standard library OrderedDict has an instance where it uses itself inside it's own definition:



          def __eq__(self, other):
          '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive
          while comparison to a regular mapping is order-insensitive.

          '''
          if isinstance(other, OrderedDict):
          return len(self)==len(other) and
          all(_imap(_eq, self.iteritems(), other.iteritems()))
          return dict.__eq__(self, other)





          share|improve this answer































            1














            No, it's fine. This is actually a pretty common pattern for implementing something like a tree or linked list node.






            share|improve this answer
























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54029763%2fusing-a-class-instance-inside-itself%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              3














              No. There's no point in going out of your way to use a class inside itself but if it solves your problem then go for it. For example python's standard library OrderedDict has an instance where it uses itself inside it's own definition:



              def __eq__(self, other):
              '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive
              while comparison to a regular mapping is order-insensitive.

              '''
              if isinstance(other, OrderedDict):
              return len(self)==len(other) and
              all(_imap(_eq, self.iteritems(), other.iteritems()))
              return dict.__eq__(self, other)





              share|improve this answer




























                3














                No. There's no point in going out of your way to use a class inside itself but if it solves your problem then go for it. For example python's standard library OrderedDict has an instance where it uses itself inside it's own definition:



                def __eq__(self, other):
                '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive
                while comparison to a regular mapping is order-insensitive.

                '''
                if isinstance(other, OrderedDict):
                return len(self)==len(other) and
                all(_imap(_eq, self.iteritems(), other.iteritems()))
                return dict.__eq__(self, other)





                share|improve this answer


























                  3












                  3








                  3







                  No. There's no point in going out of your way to use a class inside itself but if it solves your problem then go for it. For example python's standard library OrderedDict has an instance where it uses itself inside it's own definition:



                  def __eq__(self, other):
                  '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive
                  while comparison to a regular mapping is order-insensitive.

                  '''
                  if isinstance(other, OrderedDict):
                  return len(self)==len(other) and
                  all(_imap(_eq, self.iteritems(), other.iteritems()))
                  return dict.__eq__(self, other)





                  share|improve this answer













                  No. There's no point in going out of your way to use a class inside itself but if it solves your problem then go for it. For example python's standard library OrderedDict has an instance where it uses itself inside it's own definition:



                  def __eq__(self, other):
                  '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive
                  while comparison to a regular mapping is order-insensitive.

                  '''
                  if isinstance(other, OrderedDict):
                  return len(self)==len(other) and
                  all(_imap(_eq, self.iteritems(), other.iteritems()))
                  return dict.__eq__(self, other)






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jan 3 at 21:05









                  PrimusaPrimusa

                  8,04021032




                  8,04021032

























                      1














                      No, it's fine. This is actually a pretty common pattern for implementing something like a tree or linked list node.






                      share|improve this answer




























                        1














                        No, it's fine. This is actually a pretty common pattern for implementing something like a tree or linked list node.






                        share|improve this answer


























                          1












                          1








                          1







                          No, it's fine. This is actually a pretty common pattern for implementing something like a tree or linked list node.






                          share|improve this answer













                          No, it's fine. This is actually a pretty common pattern for implementing something like a tree or linked list node.







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Jan 3 at 21:05









                          Daniel PrydenDaniel Pryden

                          47.3k975117




                          47.3k975117






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54029763%2fusing-a-class-instance-inside-itself%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Mossoró

                              Error while reading .h5 file using the rhdf5 package in R

                              Pushsharp Apns notification error: 'InvalidToken'