Pitão

Função Python super ()

Função Python super ()
Um script Python pode fazer programação estruturada e Programação orientada a objetos (OOP). Super () é uma função Python embutida de OOP. O conhecimento básico de OOP é preferível para entender a finalidade e o uso do super() método. Um dos recursos importantes do OOP é a herança. Uma nova classe pode ser criada herdando os recursos de outra classe e é chamada de herança. Aqui, a nova classe é chamada de subclasse ou classe filha, e outra classe é chamada de superclasse ou classe pai. O super () função é usada na classe filha para se referir à classe pai e acessar todas as variáveis ​​e métodos da classe pai. Esta função torna a herança mais gerenciável. Como esta função pode ser usada em Python é mostrado neste tutorial.

Exemplo-1: Uso da função super () em herança única

Quando uma classe filha é criada pela herança de uma classe pai, ela é chamada de Herança única. O uso do super() função em herança única mostrado no seguinte script. Livro é a classe pai aqui que contém um método construtor para inicializar os dados, bookType () método para imprimir o tipo do livro, e desconto() método para exibir a oferta de desconto está disponível ou não. Eng_book é a classe filha aqui que contém um método construtor onde o super() função é usada para chamar o construtor da classe pai. A classe filha tem outro método chamado display_details () para imprimir as informações detalhadas do livro. Os objetos das classes pai e filho foram criados posteriormente para chamar os diferentes métodos das classes.

# Defina a classe pai
livro escolar:
# Definir construtor
def __init __ (próprio, título, autor, tipo, oferta):
auto.title = title
auto.autor = autor
auto.tipo = tipo
auto.oferta = oferta
# Defina a função para exibir o tipo de livro
def bookType (self):
se eu.tipo == 1:
imprimir ("% s é um livro% s." %(auto.título, 'Engenharia'))
se eu.tipo == 2:
imprimir ("% s é um livro% s." %(auto.título, 'Médico'))
se eu.type == 3:
imprimir ("% s é um livro% s." %(auto.título, 'Finanças'))
# Defina a função para exibir a oferta de desconto
desconto def (próprio):
se eu.oferta == Verdadeiro:
print ("O livro tem oferta de desconto.")
senão:
print ("O livro não tem oferta de desconto.")
# Defina a classe filha
class Eng_book (Book):
# Definir construtor
def __init __ (próprio, título, autor, tipo, oferta, preço):
super().__init __ (título, autor, tipo, oferta)
auto.preço = preço
# Defina a função para exibir os detalhes do livro
def display_details (self):
super().desconto()
se eu.oferta == Verdadeiro:
auto.preço = self.preço - próprio.preço * 0.15
print ("Nome do livro:% s"% self.título)
print ("Nome do Autor:% s"% self.autor)
imprimir ("Preço:% 0.2f "% self.preço)
print ("Usando a classe pai:")
# Defina o objeto da classe pai
objbook = Book ('Microbiologia Médica', 'Ernest Jawetz, Edward A. Adelberg, Joseph L. Melnick ', 2, False)
# Função de chamada para exibir o tipo de livro
objbook.bookType ()
# Função de chamada para exibir a oferta de desconto
objbook.desconto()
print ("\ nUsando classe filha:")
# Defina o objeto da classe filha
objEngBook = Eng_book ('Engenharia Matemática', 'H K Dass', 1, Verdadeiro, 50)
# Função de chamada para exibir detalhes do livro
objEngBook.display_details ()

Resultado:

A seguinte saída aparecerá após a execução do script acima. A primeira saída foi gerada usando o objeto da classe pai e a segunda saída foi gerada usando o objeto da classe filha.

Exemplo 2: uso da função super () em heranças múltiplas

Quando uma nova classe é gerada pela herança de várias classes, este tipo de Herança é chamado de herança múltipla. O uso da função super () em várias heranças é mostrado no seguinte script. Departamento é a classe pai que contém um método construtor para inicializar as variáveis ​​e o exibição() método para imprimir o nome do departamento. Cursos são as classes filhas herdadas do Departamento classe, e contém um método construtor e o display_Course_info () método para exibir os detalhes do curso. Professores são as classes filhas herdadas do Departamento classe, e contém um método construtor e o display_Teacher_info () método para exibir os detalhes do professor. Professor_Curso é a última classe filha do script que foi definida pela herança de ambos Cursos e Professores Aulas. Os objetos das três classes filhas foram criados no final do script para acessar os diferentes métodos das classes. O super() função foi usada dentro do método construtor de todas as classes filhas para chamar o construtor da classe pai. São necessários quatro valores de argumento para criar o objeto da classe filha porque a construção da classe Department contém quatro argumentos.

# Definir classe-mãe
Departamento de classe ():
def __init __ (self, dept_name, total_courses, total_credit, total_teachers):
auto.dept_name = dept_name
auto.total_courses = total_courses
auto.total_credit = total_credit
auto.total_teachers = total_teachers
def display (self):
print ("Nome do Departamento:% s"% self.dept_name)
# Defina a primeira classe filha
Cursos de classe (Departamento):
def __init __ (próprio, nome, cursos, créditos, professores):
# Chame o construtor da classe pai
super().__init __ (nome, cursos, créditos, professores)
def display_Course_info (self):
print ("Total de cursos:% d"% self.total_courses)
print ("Total de créditos:% d"% self.Crédito total)
# Defina a segunda classe filha
Professores de classe (Departamento):
def __init __ (próprio, nome, cursos, créditos, professores):
# Chame o construtor da classe pai
super().__init __ (nome, cursos, créditos, professores)
def display_Teacher_info (self):
print ("Total de professores:% d"% self.total_teachers)
# Defina a terceira classe filha herdada de duas classes
classe Professor_Curso (cursos, professores):
def __init __ (próprio, nome, cursos, créditos, professores):
# Chame o construtor da classe pai
super().__init __ (nome, cursos, créditos, professores)
def display_details (self):
super().exibição()
super().display_Course_info ()
super().display_Teacher_info ()
imprimir ("Usando a primeira classe filha")
objCourses = Cursos ('CSE', 72, 150, 50)
objCourses.exibição()
objCourses.display_Course_info ()
imprimir ("\ nUsando a segunda classe filha")
objTeachers = Professores ('BBA', 65, 140, 55)
objTeachers.exibição()
objTeachers.display_Teacher_info ()
print ("\ nUsando a terceira classe filha herdada de várias classes")
objDCT = Teacher_Course ('Inglês', 60, 122, 20)
objDCT.display_details ()

Resultado:

A seguinte saída aparecerá após a execução do script acima. Três saídas foram geradas aqui, criando os objetos de três classes filhas.

Conclusão:

O super() função só pode ser usada dentro da classe filha para chamar o construtor e qualquer outro método da classe pai. Os usos desta função foram mostrados neste tutorial através da criação de herança de nível único e multi-nível. Espero que o propósito de usar esta função em OOP seja esclarecido após a leitura deste tutorial.

Como desenvolver um jogo no Linux
Uma década atrás, poucos usuários de Linux preveriam que seu sistema operacional favorito um dia seria uma plataforma de jogos popular para videogames...
Portas de código aberto para motores de jogos comerciais
Recriações gratuitas, de código aberto e de mecanismo de jogo de plataforma cruzada podem ser usadas para jogar jogos antigos, bem como alguns dos tít...
Melhores jogos de linha de comando para Linux
A linha de comando não é apenas sua maior aliada ao usar o Linux - ela também pode ser uma fonte de entretenimento porque você pode usá-la para jogar ...