Table des matières
1. Concept " >1. Concept
2. Attributs" >2. Attributs
2.1 Attributs des membres" >2.1 Attributs des membres
2.2 Attributs publics " >2.2 Attributs publics
3. Caractéristiques des attributs publics " >3. Caractéristiques des attributs publics
3.1 Appel d'instance unique et modification des propriétés publiques " >3.1 Appel d'instance unique et modification des propriétés publiques
Maison développement back-end Tutoriel Python Introduction aux propriétés publiques des classes

Introduction aux propriétés publiques des classes

Jul 17, 2017 pm 03:58 PM
Propriété publique 属性

1. Concept

Nous avons évoqué plus haut les attributs privés d'une classe, qui sont ceux auxquels on ne peut pas accéder directement dans la classe. Mais que se passe-t-il si les propriétés directement accessibles sont des propriétés publiques ? Pas vraiment. Les propriétés du constructeur __init__() sont fondamentalement accessibles au monde extérieur, mais ce ne sont pas des propriétés publiques. Alors, que sont les attributs publics ?

Définition : Désigne les propriétés accessibles par tous les objets appartenant à cette classe, appelées propriétés publiques.

2. Attributs

2.1 Attributs des membres

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('Bigberg', 'Doctor', '8833421', 'hz')
p2 = Person('Ashlex', 'Police', '8833232', 'bj')
Copier après la connexion
print(p1.job, p2.job)

# 输出
Doctor Police
Copier après la connexion

Nous sommes ici Deux objets sont définis sous la classe Person, p1 et p2. Évidemment, nous n'avons aucun moyen pour p1 d'accéder à l'attribut job de p2, c'est-à-dire Police. Ensuite, les attributs tels que self.name dans le constructeur __init__() sont appelés attributs membres.

2.2 Attributs publics

class Person(object):
    nationality = 'CN'   # 定义公有属性

    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')
p2 = Person('Ashlex', 'Police', '8833232', 'bj')

print(p1.nationality)
print(p2.nationality)

# 输出

CN
CN
Copier après la connexion

Pour les attributs publics, la valeur obtenue par tous les objets d'instance y accédant est Même.

 

3. Caractéristiques des attributs publics

Nous pouvons non seulement accéder, mais aussi modifier les attributs publics.  

class Person(object):
    nationality = 'CN'   # 定义公有属性

    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')
p2 = Person('Ashlex', 'Police', '8833232', 'bj')

print(Person.nationality)  # 调用 公有属性
Person.nationality = 'us'   # 改变 公有属性
print(Person.nationality)

#输出

CN 
us
Copier après la connexion

 

3.1 Appel d'instance unique et modification des propriétés publiques

# 依据上例

print("--------Befoer change---------")
print(Person.nationality)
print(p1.nationality)
print(p2.nationality)

print("--------after change---------")
print(Person.nationality)
p1.nationality = 'JP'
print(p1.nationality)
print(p2.nationality)


# 输出
Copier après la connexion

--------Avant le changement---------
CN
CN
CN
--------après le changement------ ---
US
JP
US

On peut très bien comprendre p1 avant de le modifier, car tout le monde appelle l'attribut public nationalité de la classe Personne, donc p1, Le les attributs de nationalité de p2 sont les mêmes, les deux sont « CN ». Mais pourquoi l'attribut nationalité de p2 n'a-t-il pas changé après que p1 ait modifié l'attribut public ?

 

Lorsque nous définissons une classe Person, elle existe déjà dans la mémoire, bien sûr. contient également les propriétés publiques de cette classe. Lorsque l'instance initiale p1 appelle l'attribut nationalité de la classe Personne, elle fait directement référence à l'adresse mémoire de nationalité dans la classe au lieu d'ajouter un nouvel attribut appelé nationalité.

Comme indiqué ci-dessous :

print(id(Person.nationality))
print(id(p1.nationality))
print(id(p2.nationality))
print(Person.nationality, p1.nationality, p2.nationality)

#输出
1751236836128
1751236836128
1751236836128
CN CN CN
Copier après la connexion

Cela peut expliquer pourquoi lorsque la nationalité dans la classe Personne est modifiée en « US », p2 change également. Parce qu'il fait directement référence à la valeur en mémoire.

 

p1.nationality = 'JP'
Copier après la connexion

Après que p1 ait directement attribué l'attribut de nationalité, l'instance p1 s'ajoute en fait une nouvelle variable membre, appelée nationalité. C'est juste que leurs noms sont les mêmes, mais il n'y a aucun lien entre les deux, et même les adresses mémoire sont différentes.

# p1.nationality = 'JP'
print(id(Person.nationality))
print(id(p1.nationality))
print(id(p2.nationality))
print(Person.nationality, p1.nationality, p2.nationality)

#输出
2434579585096
2434579585152
2434579585096
US JP US
Copier après la connexion

Donc p1.nationality='JP' ne modifie pas les attributs publics de la classe Person, mais crée un nouvel attribut membre pour lui-même, donc le changement de p1 est Public les propriétés de la classe n'ont aucun effet.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment obtenir des propriétés littérales entières en Python sans SyntaxError ? Comment obtenir des propriétés littérales entières en Python sans SyntaxError ? Aug 20, 2023 pm 07:13 PM

Pour obtenir un attribut littéral au lieu d'une erreur de syntaxe, utilisez un espace ou des parenthèses. Les littéraux entiers sont un partif des littéraux numériques en Python.

Comment renommer les propriétés de JSON en utilisant Gson en Java ? Comment renommer les propriétés de JSON en utilisant Gson en Java ? Aug 27, 2023 pm 02:01 PM

L'annotation Gson@SerializedName peut être sérialisée en JSON et avoir la valeur de nom fournie comme nom de champ. Cette annotation peut remplacer n'importe quelle FieldNamingPolicy, y compris la politique de dénomination de champ par défaut qui peut avoir été définie sur l'instance Gson. Différentes stratégies de dénomination peuvent être définies à l'aide de la classe GsonBuilder. Syntaxe@Retention(value=RUNTIME)@Target(value={FIELD,METHOD})public@interfaceSerializedNameExample importcom.google.gson.annotations.*;

Fonction dir() de Python : afficher les propriétés et les méthodes d'un objet Fonction dir() de Python : afficher les propriétés et les méthodes d'un objet Nov 18, 2023 pm 01:45 PM

Fonction dir() de Python : afficher les propriétés et les méthodes d'un objet, exemple de code spécifique requis Résumé : Python est un langage de programmation puissant et flexible, et ses fonctions et outils intégrés offrent aux développeurs de nombreuses fonctionnalités pratiques. L'une des fonctions très utiles est la fonction dir(), qui nous permet de visualiser les propriétés et les méthodes d'un objet. Cet article présentera l'utilisation de la fonction dir() et démontrera ses fonctions et utilisations à travers des exemples de code spécifiques. Texte : la fonction dir() de Python est une fonction intégrée.

Que faire si les propriétés du disque Win11 sont inconnues Que faire si les propriétés du disque Win11 sont inconnues Jul 03, 2023 pm 04:17 PM

Que dois-je faire si les propriétés du disque de Win11 sont inconnues ? Récemment, les utilisateurs de Win11 ont constaté que le système provoquait une erreur de disque lors de l'utilisation de leur ordinateur. Et comment le résoudre ? De nombreux amis ne savent pas comment fonctionner en détail. L'éditeur a compilé ci-dessous les étapes pour résoudre l'erreur de disque Win11. Si vous êtes intéressé, suivez l'éditeur pour lire ci-dessous ! Étapes pour résoudre l'erreur de disque Win11 1. Tout d'abord, appuyez sur la combinaison de touches Win+E du clavier ou cliquez sur l'Explorateur de fichiers dans la barre des tâches. 2. Dans la barre latérale droite de l'Explorateur de fichiers, recherchez le côté et cliquez avec le bouton droit sur le local. disque (C :), dans l'élément de menu qui s'ouvre, sélectionnez Propriétés ; 3. Fenêtre Propriétés du disque local (C :), passez à Outils ;

syntaxe de l'attribut inférieur en CSS syntaxe de l'attribut inférieur en CSS Feb 21, 2024 pm 03:30 PM

Syntaxe de l'attribut bottom et exemples de code en CSS En CSS, l'attribut bottom est utilisé pour spécifier la distance entre un élément et le bas du conteneur. Il contrôle la position d'un élément par rapport au bas de son élément parent. La syntaxe de l'attribut bottom est la suivante : element{bottom:value;} où element représente l'élément auquel le style doit être appliqué et value représente la valeur inférieure à définir. la valeur peut être une valeur de longueur spécifique, telle que des pixels

Quel est le rôle de l'attribut pageXOffset en JavaScript ? Quel est le rôle de l'attribut pageXOffset en JavaScript ? Sep 16, 2023 am 09:17 AM

Si vous souhaitez obtenir les pixels vers lesquels le document défile à partir du coin supérieur gauche de la fenêtre, utilisez les propriétés pageXoffset et pageYoffset. Utilisez pageXoffset pour les pixels horizontaux. Exemple Vous pouvez essayer d'exécuter le code suivant pour apprendre à utiliser l'attribut pageXOffset en JavaScript - Démonstration en direct<!DOCTYPEhtml><html> <head> <style> &amp

Introduction aux attributs du fil du désespoir de Hearthstone Introduction aux attributs du fil du désespoir de Hearthstone Mar 20, 2024 pm 10:36 PM

Fil du désespoir est une carte rare du chef-d'œuvre de Blizzard Entertainment "Hearthstone" et a une chance d'être obtenue dans le pack de cartes "Wizbane's Workshop". Peut consommer 100/400 points de poussière arcanique pour synthétiser la version normale/or. Introduction aux attributs du Fil du Désespoir de Hearthstone : Il peut être obtenu dans le pack de cartes de l'atelier de Wizbane avec une chance, ou il peut également être synthétisé via de la poussière arcanique. Rareté : Rare Type : Classe de sort : Chevalier de la mort Mana : 1 Effet : Donne à tous les serviteurs un Râle d'agonie : Inflige 1 dégât à tous les serviteurs

Comment savoir si un élément jQuery possède un attribut spécifique ? Comment savoir si un élément jQuery possède un attribut spécifique ? Feb 29, 2024 am 09:03 AM

Comment savoir si un élément jQuery possède un attribut spécifique ? Lorsque vous utilisez jQuery pour exploiter des éléments DOM, vous rencontrez souvent des situations dans lesquelles vous devez déterminer si un élément possède un attribut spécifique. Dans ce cas, nous pouvons facilement implémenter cette fonction à l'aide des méthodes fournies par jQuery. Ce qui suit présentera deux méthodes couramment utilisées pour déterminer si un élément jQuery possède des attributs spécifiques et joindra des exemples de code spécifiques. Méthode 1 : utilisez la méthode attr() et l'opérateur typeof // pour déterminer si l'élément a un attribut spécifique

See all articles