Python Forum
How to access parent object attribute
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to access parent object attribute
#1
Hello,
There are class A and class B.
Class B is inherited from A:
class B(A):
How to access attribute attr_a1 of class A from the object b of class B ?
Thanks.
Reply
#2
Not sure if this is what you are after, if not you need to give a better example of what you are after.
class ClassA:
    attr_a1 = "attr_a1"

class ClassB(ClassA):
    pass

object_b = ClassB()

print(object_b.attr_a1)
Output:
attr_a1
Reply
#3
Parent/Child is usually reserved for object relationships, not class relationships. Use super/sub when describing a class inheritance relationship. In this example class B inherits print() from class A. B is a subclass of A and A is a superclass of B. Sounds a little odd, really. You would think the superclass would be more "super", but it it is the subclass that has greater abilities. A subclass can do everything its superclass can do, and more.
class A:
    def print(self):
        print("I am an", self.__class__.__name__)

class B(A):
    pass

a = A()
b = B()
a.print()
b.print()
Output:
I am an A I am an B
A subclass can override inherited attributes. In this example B replaces A.print() with a new method B.print()
class A:
    def print(self):
        print("I am an", self.__class__.__name__, 'I got it from A')

class B(A):
    def print(self):
        print("I am an", self.__class__.__name__, 'and this is not inherited')

a = A()
b = B()
a.print()
b.print()
Output:
I am an A I got it from A I am an B and this is not inherited
Be forewarned, most attributes in Python are Object attributes, not Class attributes and object attributes are not inherited at all.
class A:
    def __init__(self):
        self.value = 'I am an A'
        self.value2 = 'really'

    def print(self):
        print(self.value)
        print(self.value2)

class B(A):
    def __init__(self):
        self.value = 'I am a B'

a = A()
b = B()
a.print()
b.print()
Output:
I am an A really I am a B Traceback (most recent call last): File "...", line 17, in <module> b.print() File "...", line 8, in print print(self.value2) AttributeError: 'B' object has no attribute 'value2'
value and value2 are instance attributes. They can have different values for every instance of the object. As the error message shows, instance variables are not inherited. Just because class A.__init__() makes an instance variable doesn't mean the same instance variable is made for instances of class B. To guarantee that instances of B will have the same attributes as instances of class B, class B's __init__() should call class A's __init__().
class A:
    def __init__(self):
        self.value = 'I am an A'
        self.value2 = 'really'

    def print(self):
        print(self.value)
        print(self.value2)

class B(A):
    def __init__(self):
        super().__init__()
        self.value = 'I am a B'

a = A()
b = B()
a.print()
b.print()
Output:
I am an A really I am a B really
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Question Chain object that have parent child relation.. SpongeB0B 10 1,081 Dec-12-2023, 01:01 PM
Last Post: Gribouillis
  AttributeError: '_tkinter.tkapp' object has no attribute 'username' Konstantin23 4 1,674 Aug-04-2023, 12:41 PM
Last Post: Konstantin23
  Python: AttributeError: 'PageObject' object has no attribute 'extract_images' Melcu54 2 3,869 Jun-18-2023, 07:47 PM
Last Post: Melcu54
  Object attribute behavior different in 2 scripts db042190 1 730 Jun-14-2023, 12:37 PM
Last Post: deanhystad
  cx_oracle Error - AttributeError: 'function' object has no attribute 'cursor' birajdarmm 1 2,337 Apr-15-2023, 05:17 PM
Last Post: deanhystad
  Pandas AttributeError: 'DataFrame' object has no attribute 'concat' Sameer33 5 5,596 Feb-17-2023, 06:01 PM
Last Post: Sameer33
  WebDriver' object has no attribute 'find_element_by_css_selector rickadams 3 5,902 Sep-19-2022, 06:11 PM
Last Post: Larz60+
  'dict_items' object has no attribute 'sort' Calli 6 4,475 Jul-29-2022, 09:19 PM
Last Post: Gribouillis
  AttributeError: 'numpy.ndarray' object has no attribute 'load' hobbyist 8 7,107 Jul-06-2022, 10:55 AM
Last Post: deanhystad
  AttributeError: 'numpy.int32' object has no attribute 'split' rf_kartal 6 4,357 Jun-24-2022, 08:37 AM
Last Post: Anushka00

Forum Jump:

User Panel Messages

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