Python Forum
Pass an object to a class, then make an object of it and pass again
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pass an object to a class, then make an object of it and pass again
#11
"anti-pattern" translates to "You are doing it wrong".

Everything in Python is open to the public. There is no concept of "private" like there is in C++ and most other OOP languages. Because all things are public and because Python programmers are lazy, the common practice (pattern) is to directly reference instance variables using namespace.variable_name. This is generally a good thing because it results in less code to write and maintain and reduces the amount of code someone has to learn to use you class. It would be very common for somebody using your class to directly reference eyes as spider.Body.top.eyes=8 instead of using the spider.set_eyes(8) method. This is so common that most class authors only write a "setter" if setting a class attribute has some side effect.

For example, let's say you have a set_feet() method that also sets the number of legs.
def set_feet(self, num_feet, num_legs=None):
    self.feet = num_feet
    self.legs = num_feet if num_legs is None else num_legs
This makes it easier for the class user without adding much code and it enforces consistency between legs and feet. Another reason for writing setters is they provide a handle for connecting your classes to GUI controls and timers and things that need a function.
TomasAm likes this post
Reply


Messages In This Thread
RE: Pass an object to a class, then make an object of it and pass again - by deanhystad - Nov-09-2020, 04:16 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Class and Object HW for cars - Help with error handling for user inputs jakeshugart 2 585 May-09-2024, 05:00 PM
Last Post: jakeshugart
  Object Detection with ESP32 CAM. MateoG 0 750 Oct-11-2023, 01:44 PM
Last Post: MateoG
  fixing error TypeError: 'float' object is not subscriptable programmingirl 1 1,656 Jan-28-2023, 08:13 PM
Last Post: deanhystad
  how to pass named arguments arunan 1 4,074 Jan-18-2021, 01:30 PM
Last Post: buran
  Animating 2D object movement with matplotlib esamalihalil1993 0 1,874 Nov-23-2020, 05:49 PM
Last Post: esamalihalil1993
  AttributeError: 'str' object has no attribute 'size' russoj5 4 7,707 Nov-15-2020, 11:43 PM
Last Post: deanhystad
  Task that i can't pass c06a8acb 6 2,777 Nov-11-2020, 07:50 AM
Last Post: c06a8acb
  Object has no attribute 'replaceall' ? peterp 2 7,404 Nov-10-2020, 09:23 PM
Last Post: buran
  Help on stimulating approaching an object javesike1262 9 4,008 Oct-23-2020, 01:08 AM
Last Post: javesike1262
  Returning data from a pyobjc object to python environment newpythonuser100 3 2,586 Jul-28-2020, 12:08 PM
Last Post: newpythonuser100

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020