Maison  >  Article  >  développement back-end  >  Introduction aux classes et attributs

Introduction aux classes et attributs

巴扎黑
巴扎黑original
2017-07-21 14:14:241366parcourir

1. Présentation

1. Définir la classe (class Dog(object)) --> Instancier (d = Dog()) ---> )

2. Constructeur __init__()

3. self.name = nom des attributs de classe et des variables membres

4. >

2. Accéder aux propriétés de la classe

class Role(object):
    def __init__(self, name, role, weapon, life_value=100, money=15000):
        self.name = name
        self.role = role
        self.weapon = weapon
        self.life_value = life_value
        self.money = money

    def shot(self):
        print("%s is shooting..." % self.name)

    def got_shot(self):
        print("ah...,%s got shot..." % self.name)

    def buy_gun(self, gun_name):
        print("%s just bought %s" % (self.name,gun_name))


r1 = Role('Alex', 'police', 'AK47')  # 生成一个角色
r2 = Role('Jack', 'terrorist', 'B22')   # 生成一个角色
Méthode

Nous utilisons un objet instance .

propriétés/méthodes d'accès

r1.shot()    #  调用shot 方法
r2.buy_gun('B13')  # 调用 buy_gun的方法并传参
print(r1.role)   # 打印类的属性

# 输出

Alex is shooting...
Jack just bought B13
police
 2.1 Modifier les propriétés de l'objet

Dans l'exemple ci-dessus, nous avons changé l'arme du personnage r2, à savoir B22 --> B13. Mais en fait, quand on appelle les attributs d'arme du personnage r2, on constatera que son arme n'a pas changé :

En fait, on peut directement changer les attributs de l'objet lors de l'achat de l'arme :
r2.buy_gun('B13')
print(r2.weapon)

# 输出
Jack just bought B13
B22       # 可以发现武器依然是 B22

 
def buy_gun(self, gun_name):
      print("%s just bought %s" % (self.name, gun_name))
      self.weapon = gun_name    # 在方法内改变属性



r2.buy_gun('B13')
print(r2.weapon)

#输出
Jack just bought B13
B13    # 可以发现武器已经改变
3. Attributs privés

3.1. attributs privés

Une fois les attributs d'une classe définis comme attributs privés, ils ne peuvent pas être appelés en externe ni modifiés à volonté. Les propriétés privées ne peuvent être utilisées qu'au sein de la classe.

Le résultat de l'opération est qu'il est possible d'accéder au nom de l'attribut, mais une erreur est signalée lors de l'accès direct à l'attribut privé self.__address. Mais si vous utilisez d’autres méthodes, vous pouvez toujours y accéder.
class Person(object):

    def __init__(self, name, job, phone, address):
        self.name = name
        self.job = job
        self.phone = phone
        self.__address = address   # 定义一个私有属性

    def sayhi(self):
        print("hell,%s" % self.name)

p1 = Person('Bigberg', 'Doctor', '8833421', 'hz')
print(p1.name)
print(p1.__address)   # 访问私有属性

# 输出

Bigberg
  File "G:/python/untitled/study6/类的私有属性.py", line 17, in <module>
    print(p1.__address)
AttributeError: &#39;Person&#39; object has no attribute &#39;__address&#39;

3.2. La méthode get accède aux propriétés privées

Les propriétés privées ne sont pas accessibles directement de l'extérieur, mais elles sont accessibles à l'intérieur de la classe, afin que nous puissions définir une méthode pour obtenir des propriétés privées.

 
class Person(object):

    def __init__(self, name, job, phone, address):
        self.name = name
        self.job = job
        self.phone = phone
        self.__address = address

    def get_private(self):
        return self.__address

    def sayhi(self):
        print("hell,%s" % self.name)

p1 = Person(&#39;Bigberg&#39;, &#39;Doctor&#39;, &#39;8833421&#39;, &#39;hz&#39;)
res = p1.get_private()
print(res)

# 输出
hz
 
3.3 Forcer l'accès aux attributs privés

On peut également utiliser une méthode pour forcer l'accès aux attributs privés attributs , et même modifier la valeur des propriétés privées. Méthode : nom de l'objet._nom de la classe__nom de l'attribut. Les classes

 
class Person(object):

    def __init__(self, name, job, phone, address):
        self.name = name
        self.job = job
        self.phone = phone
        self.__address = address

    def get_private(self):
        return self.__address

    def sayhi(self):
        print("hell,%s" % self.name)

p1 = Person(&#39;Bigberg&#39;, &#39;Doctor&#39;, &#39;8833421&#39;, &#39;hz&#39;)

print(p1._Person__address)   # 访问私有属性

print("----change----")
p1._Person__address = &#39;BJ&#39;    # 修改私有属性
print(p1._Person__address)

#输出
hz
----change----
BJ

sont des outils importants pour simplifier et optimiser les applications.

1. Héritage : la capacité des sous-classes à hériter des caractéristiques des classes parentes. Il incarne et étend le partage de méthodes de programmation orientées objet, permettant aux objets du même type de partager des données et du code de programme, améliorant ainsi la réutilisabilité des programmes. La classe parent est une classe qui peut être définie davantage pour dériver de nouvelles classes, et la sous-classe est une nouvelle classe établie en utilisant d'autres classes comme point de départ et en définissant des caractéristiques plus spécifiques. 2. Polymorphisme : certaines classes associées contiennent des méthodes portant le même nom, mais le contenu des méthodes peut être différent. Celui à appeler est déterminé au moment de l'exécution en fonction de la classe de l'objet. Le même message peut conduire à différentes actions lorsqu'il est reçu par différents objets. 3. Abstraction : extraire les caractéristiques distinctives d'une classe ou d'un objet sans traiter d'autres informations sur la classe ou l'objet.

4. Résumé

1. Définir les attributs privés : self.__private_attr_name = private_attr_name

2. Accéder aux attributs privés : nom de l'objet._nom de la classe__nom de l'attribut (d._dog__sex)

3. Fournir un accès à l'interface externe en lecture seule :

def. get_sex(self):

return self.__sex

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn