C'est un mémorandum que j'ai appris selon References, en essayant de lire Python autant que possible. J'ai résumé les points qui m'intéressaient et les points que j'ai trouvés utiles par rapport à Java. La partie 1 est ici La partie 2 est ici * Il s'agit d'un contenu assez basique. </ strong>
Le concept de classe lui-même n'est pas si différent. Un exemple de définition d'une classe est donné ci-dessous.
java
class SampleClass {
//Traitement de classe
}
python
class SampleClass:
#Traitement de classe
Instanciez une classe. La manipulation est presque la même que Java. ~~ Devrait ~~
java
SampleClass sClass = new SampleClass();
python
sClass = SampleClass()
C'est comme une variable d'instance en Java (?). Vous pouvez ajouter des attributs à l'instance.
python
sClass.attr = "Atori Byuto"
print(sClass.attr)
>>Atori Byuto
Lors de l'ajout d'un argument à une méthode de classe, ajoutez self au premier argument.
Self peut être utilisé pour manipuler l'instance elle-même
java
class SampleClass {
int counter = 0;
int count(int a) {
counter += a;
}
}
python
class SampleClass:
counter = 0;
def count(self, a):
self.counter += a
La méthode d'initialisation utilise «init» (méthode spéciale).
java
publiv class Human {
String name;
String birthday;
public Human(String name, String birthday) {
this.name = name;
this.birthday = birthday;
}
}
python
class Human:
def __init__(self, name = None, birthday = None):
self.__name = name
self.__birthday = birthday
Préfixez les méthodes et les attributs avec «» (deux traits de soulignement) pour l'encapsulation.
L'accès de l'extérieur peut être interdit en ajoutant «».
Par convention, si vous préfixez une méthode ou un attribut avec _
(un trait de soulignement)
Il a le sens de "Ne pas accéder de l'extérieur car il n'est utilisé qu'à l'intérieur de la classe" (semble-t-il).
Ajout </ strong> ~~ Il semble que getter et setter ne sont pas définis en Python. ~~ Il semble qu'il n'est pas recommandé de définir des méthodes telles que get〇〇 et set〇〇 en Python. (Comment accéder aux attributs peut être résumé séparément) Dans cet article, les getters et les setters sont définis de la manière ci-dessus pour les rendre plus faciles à comprendre par rapport à Java. Notez s'il vous plaît. Si vous ne définissez pas les traits de soulignement, les getters et les setters, je pense à apprendre séparément et à les résumer.
java
publiv class Human {
private String name;
private String birthday;
public Human(String name, String birthday) {
this.name = name;
this.birthday = birthday;
}
public getName() {
return this.name;
}
public getBirthday() {
return this.birthday;
}
public setName(String name) {
this.name = name;
}
public setBirthday(String birthday) {
this.birthday = birthday;
}
}
python
class Human:
def __init__(self, name = None, birthday = None):
self.__name = name
self.__birthday = birthday
def getName(self):
return self.__name
def getBirthday(self):
return self.__birthday
def setName(self, name):
self.__name = name
def setBirthday(self, birthday):
self.__birthday = birthday
Python est multi-héritable </ strong>.
Pour l'héritage multiple, spécifiez les noms de classe séparés par ,
.
java
public class SuperMan extends Human {
private String ability;
public getAbility() {
return this.age;
}
public setAbility(String ability) {
this.ability = ability;
}
python
class SuperMan(Human): #Pour SuperMan à héritage multiple(Human, Man)Définir comme
def getAbility(self):
return self.__ability
def setAbility(self, ability = None):
self.__ability = ability
Méthodes spéciales qui peuvent limiter l'ajout d'attributs
__slots__ = [nom d'attribut 1, nom d'attribut 2, ...]
Améliorez l'efficacité d'utilisation de la mémoire
python
class Profile:
__slots__ = ['height', 'weight', 'bloodType']
def __init__(self, bloodType = None):
self.bloodType = bloodType
a = Profile('A')
print(a.bloodType)
>>A
#Attributs définis dans les emplacements
a.height = 170
a.weight = 60
a.constellation = 'Aries'
>>Une erreur se produit
Fonction intégrée pour définir facilement getter et setter.
Contrôlez facilement l'accès aux attributs privés.
propriété (nom de la méthode de lecture, [nom de la méthode de définition])
python
class Human:
def __init__(self, name = None):
self.__name = name
def getName(self):
return self.__name
def setName(self, name):
self.__name = name
propName = property(getName, setName)
#Lorsque vous effectuez une affectation, le setter défini dans la propriété fonctionne.
propName = 'takeshi'
#Lors de la récupération, le setter défini dans la propriété fonctionne
print(propName)
>>takeshi
Quand j'ai examiné les inconvénients de Python, j'ai trouvé qu'il était lent à exécuter. J'ai senti que les «slots» résumés cette fois étaient nécessaires pour améliorer les inconvénients. Je souhaite approfondir ma compréhension afin de pouvoir utiliser correctement les fonctions de type Python.
Référence </ strong> Atsushi Shibata (2016) «Minna no Python 4th Edition» SB Creative Co., Ltd.
Référence officielle </ strong> Référence officielle Python
À propos des types de données </ strong> Table de classification des types de données intégrés de Python (mutable, etc.)
À propos du trait de soulignement </ strong> Cours Python pour débutants, version 7 orientée objet encapsulée Leçon 12 Définition de classe - Introduction à la grammaire de base Python python underbar ce n'est pas ça
Recommended Posts