Python Forum
[Solved] Novice question to OOP: can a method of class A access attributes of class B
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Solved] Novice question to OOP: can a method of class A access attributes of class B
#1
I am lacking basic knowledge of Object Oriented Programming.

The situation
Let's assume within a main function I have created two instances. One based on class A, the other one based on class B.
Class A contains data in an attribute. A method of Class B needs access to those data.

|-----class A-----| |-----class B-----|
| Attribut x <--- |---|--Method y |
|-------------------| |-------------------|

How to do this?
Usually, I would hand over the needed values x, when class B is initiated (somehow like call by value): instance of B = B(value x)
The issue: class B will also change and update the value of x and a 3rd class C needs later access to this updated value. Which somehow makes me thinking in the direction of handing over a pointer of value x to class B (which I think you don't do in Python).
You can think of class A as a "data-storage".

(Another thought I had was to use inheritance ... but doesn't look for me the right choice, because this problem is not about common attributes, etc.)

Side note: where I have this problem
Indeed, I am more interested how in general the solution to such a problem should look like - is there a general concept? Nonetheless, I have this problem currently in following situation: with PyQt6 I designed a GUI. This GUI displays data coming from class A (which class B gets through "call by value"). But the GUI also allows the user to change the displayed data. Those changes should now be stored back into class B.
(Remark: the code, especially from the GUI, is very long already, so I did not copy it here to avoid to much noise)

Thanks in advance for all comments, tips, hints, etc.
Reply
#2
It is not a good idea to have a class reference attributes of an unrelated (not a superclass) class. It is almost acceptable if class B is responsible for creating creating instances of class A. "I brought you into this world and I can can check your credit card balance." It is still bad parenting, but sometimes required. If there are A objects outside the scope of B, and B does things other than cater to A, it is a better design to have a helper function that knows about A and B and implements the passage of information between them.

As to the PyQt example, I would either bind the control's signal to a method in A, or have the control call a helper function that knows about A.
BigMan likes this post
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How does this code create a class? Pedroski55 3 115 6 hours ago
Last Post: Pedroski55
  class definition and problem with a method HerrAyas 2 234 Apr-01-2024, 03:34 PM
Last Post: HerrAyas
  Printing out incidence values for Class Object SquderDragon 3 275 Apr-01-2024, 07:52 AM
Last Post: SquderDragon
  class and runtime akbarza 4 355 Mar-16-2024, 01:32 PM
Last Post: deanhystad
  Operation result class SirDonkey 6 504 Feb-25-2024, 10:53 AM
Last Post: Gribouillis
  The function of double underscore back and front in a class function name? Pedroski55 9 645 Feb-19-2024, 03:51 PM
Last Post: deanhystad
  super() and order of running method in class inheritance akbarza 7 723 Feb-04-2024, 09:35 AM
Last Post: Gribouillis
  Class test : good way to split methods into several files paul18fr 4 472 Jan-30-2024, 11:46 AM
Last Post: Pedroski55
  Good class design - with a Snake game as an example bear 1 1,825 Jan-24-2024, 08:36 AM
Last Post: annakenna
  question about __repr__ in a class akbarza 4 605 Jan-12-2024, 11:22 AM
Last Post: DeaD_EyE

Forum Jump:

User Panel Messages

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