Estou tentando aprender python e agora estou tentando pegar o jeito das classes e como manipulá-las com instâncias.
Não consigo entender esse problema de prática:
Crie e retorne um objeto de aluno cujo nome, idade e maior sejam iguais aos dados fornecidos como entrada
def make_student(name, age, major)
Eu simplesmente não entendo o que isso significa por objeto. Eles significam que eu deveria criar uma matriz dentro da função que contém esses valores? ou criar uma classe e deixar essa função estar dentro dela e atribuir instâncias? (antes desta pergunta, pediram-me para montar uma turma com nome, idade e curso principal)
class Student:
name = "Unknown name"
age = 0
major = "Unknown major"
__init__
método é relevante aqui: docs.python.org/2/reference/datamodel.html#object.__init__Respostas:
Observe que, embora um dos princípios da filosofia do Python seja "deve haver um - e de preferência apenas um - maneira óbvia de fazê-lo" , ainda existem várias maneiras de fazer isso. Você também pode usar os dois trechos de código a seguir para aproveitar os recursos dinâmicos do Python:
Prefiro o primeiro, mas há casos em que o último pode ser útil - um quando se trabalha com bancos de dados de documentos como o MongoDB.
fonte
class Unicorn
e emhas_hooves = True
vez dename = ""
.Crie uma classe e forneça um
__init__
método:Agora, você pode inicializar uma instância da
Student
classe:Embora eu não saiba por que você precisa de uma
make_student
função de aluno, se ela faz a mesma coisa queStudent.__init__
.fonte
Objetos são instâncias de classes. Classes são apenas as plantas dos objetos. Então, dada a sua definição de classe -
Você pode criar uma
make_student
função atribuindo explicitamente os atributos a uma nova instância deStudent
-Mas provavelmente faz mais sentido fazer isso em um constructor (
__init__
) -O construtor é chamado quando você usa
Student()
. Aceitará os argumentos definidos no__init__
método A assinatura do construtor agora seria essencialmenteStudent(name, age, major)
.Se você usar isso, uma
make_student
função é trivial (e supérflua) -Por diversão, aqui está um exemplo de como criar uma
make_student
função sem definir uma classe. Por favor não tente isto em casa.fonte
__init__()
método é diferente de um construtor?__init__
não é um construtor ", porque o objeto já foi construído quando o tempo__init__
é chamado e você já tem uma referência válida para a nova instância da classe". ( Diveintopython.net/object_oriented_framework/... )Quando você cria um objeto usando a classe predefinida, primeiro deseja criar uma variável para armazenar esse objeto. Em seguida, você pode criar um objeto e armazenar a variável que você criou.
Na verdade, esse método init é o construtor da classe. Você pode inicializar esse método usando alguns atributos. Nesse ponto, ao criar um objeto, você precisará passar alguns valores para atributos específicos.
fonte