Introduction aux propriétés publiques des classes
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')
print(p1.job, p2.job) # 输出 Doctor Police
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
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
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) # 输出
--------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
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'
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
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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, 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 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 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

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> &

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 ? 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
