J'essaie d'apprendre le python et j'essaye maintenant de comprendre les classes et comment les manipuler avec des instances.
Je n'arrive pas à comprendre ce problème de pratique:
Créer et renvoyer un objet étudiant dont le nom, l'âge et la majeure sont les mêmes que ceux donnés en entrée
def make_student(name, age, major)
Je ne comprends tout simplement pas ce que cela signifie par objet, cela signifie-t-il que je devrais créer un tableau à l'intérieur de la fonction qui contient ces valeurs? ou créer une classe et laisser cette fonction être à l'intérieur, et attribuer des instances? (avant cette question, on m'a demandé de créer une classe d'étudiants avec le nom, l'âge et la majeure à l'intérieur)
class Student:
name = "Unknown name"
age = 0
major = "Unknown major"
__init__
méthode est pertinente ici: docs.python.org/2/reference/datamodel.html#object.__init__Réponses:
Notez que même si l'un des principes de la philosophie de Python est "il devrait y avoir une - et de préférence une seule - façon évidente de le faire" , il existe encore plusieurs façons de le faire. Vous pouvez également utiliser les deux extraits de code suivants pour tirer parti des capacités dynamiques de Python:
Je préfère le premier, mais il y a des cas où le second peut être utile - l'un étant lorsque vous travaillez avec des bases de données de documents comme MongoDB.
la source
class Unicorn
ethas_hooves = True
au lieu dename = ""
.Créez une classe et donnez-lui une
__init__
méthode:Maintenant, vous pouvez initialiser une instance de la
Student
classe:Bien que je ne sache pas pourquoi vous avez besoin d'une
make_student
fonction d'étudiant si elle fait la même chose queStudent.__init__
.la source
Les objets sont des instances de classes. Les classes ne sont que les plans des objets. Donc, étant donné votre définition de classe -
Vous pouvez créer une
make_student
fonction en attribuant explicitement les attributs à une nouvelle instance deStudent
-Mais il est probablement plus logique de le faire dans un constructeur (
__init__
) -Le constructeur est appelé lorsque vous utilisez
Student()
. Il prendra les arguments définis dans la__init__
méthode. La signature du constructeur serait désormais essentiellementStudent(name, age, major)
.Si vous utilisez cela, alors une
make_student
fonction est triviale (et superflue) -Pour le plaisir, voici un exemple de création d'une
make_student
fonction sans définir de classe. Veuillez ne pas essayer cela à la maison.la source
__init__()
méthode est-elle différente d'un constructeur?__init__
n'est pas un constructeur, "parce que l'objet a déjà été construit au moment de l'__init__
appel et que vous avez déjà une référence valide à la nouvelle instance de la classe." ( diveintopython.net/object_oriented_framework/… )lorsque vous créez un objet à l'aide de la classe predefine, vous voulez d'abord créer une variable pour stocker cet objet. Ensuite, vous pouvez créer un objet et stocker la variable que vous avez créée.
En fait, cette méthode init est le constructeur de la classe. Vous pouvez initialiser cette méthode à l'aide de certains attributs. À ce stade, lorsque vous créez un objet, vous devrez passer des valeurs pour des attributs particuliers.
la source