#java #python
Вопрос:
Поскольку я изучаю как Java, так и Python, мне стало любопытно, может ли он получить доступ к родительским переменным с помощью super
ключевого слова, как на языке Java.
На Яве это было бы похоже
public class Parent {
int var = 222;
}
public class Child extends Parent {
int var = super.var
}
но в Python это вызовет ошибку
class Parent:
var = 222
class Child(Parent):
var = super.var
Я знаю , что его можно использовать как Parent.var
вместо super.var
, но это кажется нехорошим, потому что он не показывает, что это переменная его родителя.
Есть ли какой-либо способ использовать родительскую переменную в дочернем классе, как в Java?, если нет, то аналогичный?
Комментарии:
1. Вы можете использовать наследование, чтобы увидеть это youtu.be/an59YHkdK9A и это youtu.be/J2_DHndMW9s
2. зачем вам это делать
int var = super.var
— просто используйтеvar
его по наследству.
Ответ №1:
Вы можете получить к нему доступ по self
ссылке, потому Child
что унаследовано var
.
Попробуйте это:
class Parent:
var = 222
class Child(Parent):
def __init__(self):
print(self.var)
child = Child()
print(child.var)
Комментарии:
1. Разве » var » не должно быть полем экземпляра в родительском классе? (у вас это как статическое поле)
Ответ №2:
Исходный код Java содержит ‘var’ в качестве поля экземпляра в базовом классе. Эквивалентным Python был бы:
class Parent(object):
def __init__(self):
self.var = 222
class Child(Parent):
def inst_method(self):
var = self.var # temp copy of self.var
Обратите внимание, что » var «не имеет смысла быть полем экземпляра в классе «Дочерний», как в вашем исходном коде Java (вероятно, в любом случае это запрещено в Java), но, возможно, в качестве локальной переменной в качестве временной копии поля базового класса.
Ответ №3:
class Parent:
var = 222
class Child(Parent):
print("from inside class ", Parent.var)
print("from class obj ", Child().var)