Python — подкласс

#python #python-3.x

#python #python-3.x

Вопрос:

Как вызвать подкласс, например, class1.class2.function, точно так же, как поддомены, shop.domain.com я попробовал этот метод

 class A:
    class B:
        def ping():
            print("Hi")
a = A()
b = a.B()
 

но это не сработало.
я также пытался

 class A:
    def ping():
        print("Class A")

class B(A):
    def pingB():
        print("Class B")
 

но также не сработало

Комментарии:

1. Можете ли вы описать, что не работает?

2. @AryanMishra оба метода работают, я попробовал первый метод, и он вызвал <function Class1.Class2.function at 0x0000021E8DAACCA0>

3. Подклассы Python не предназначены для работы как иерархия доменных имен. Кроме того, это не подклассы — это вложенные классы, которые редко нужны и имеют некоторые неудобные особенности области видимости.

4. @RaphielHS вы пропустили ввод параметра self в методы

5. Почему вы делаете это в первую очередь? Существует очень мало проблем, которые решают вложенные классы.

Ответ №1:

Вы не добавили self аргумент-

В ПЕРВОМ СЛУЧАЕ:

 class A:
    class B:
        def ping(self):
            print("Hi")
a = A()
b = a.B()
b.ping()
 

ВО ВТОРОМ СЛУЧАЕ:

 class A:
    def ping():
        print("Class A")

class B(A):
    def pingB(self):
        print("Class B")

b = B()
b.pingB()
 

Надеюсь, эта информация будет вам полезна!
Счастливого кодирования!

Ответ №2:

Вам все равно нужно вызвать функцию внутри B класса при инициализации b в качестве подкласса B . Кроме того, функции внутри класса нуждаются в self параметре.

 class A:

    class B:

        def ping(self):
            print("Hi")

a = A()  # Initializing variable <a> as new object to class <A>

b = a.B()  # Initializing variable <b> as new object to class <B> (Subclass of a)

b.ping()  # Calling function <ping> which should print the string "Hi"