#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"