Orienté objet avancé
Partie de syntaxe avancée orientée objet
Par @staticmethod Le décorateur peut transformer la méthode décorée en méthode statique. Qu'est-ce qu'une méthode statique ? En fait, il n'est pas difficile de comprendre que les méthodes ordinaires peuvent être appelées directement après l'instanciation, et que les variables d'instance ou de classe peuvent être appelées via self dans la méthode, mais que les méthodes statiques ne peuvent pas accéder aux variables d'instance ou de classe, et on ne peut pas y accéder. l'instance. Les méthodes des variables et des variables de classe n'ont en réalité rien à voir avec la classe elle-même. Son seul lien avec la classe est que la méthode doit être appelée via le nom de la classe.
class SchoolMember(object): def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex member_nums = 0def introduce(self): print("My name is %s,and I am %s year old." %(self.name,self.age)) @staticmethod def talk(): print("I like to study python")class Teacher(SchoolMember): def __init__(self,name,age,sex,course,salary): super(Teacher,self).__init__(name,age,sex) self.course = course self.salary = salary def Teaching(self): print("Teacher %s is teaching %s." %(self.name,self.course)) s1 = Teacher("alex",22,"Femal","python",10000) print("before:",s1.member_nums) SchoolMember.member_nums = 12print("before:",s1.member_nums) s1.member_nums = 666 #是在类中重新生成一个变量 print("after:",s1.member_nums) SchoolMember.member_nums = 12print("after:",s1.member_nums)
Dans le code ci-dessus, member_nums est une variable de classe Si s1.member_nums est appelé directement, la valeur de la classe est appelée si s1 ; . member_nums = 666, ce qui équivaut à ajouter une nouvelle variable à l'instance. À ce stade, lors de la modification de la valeur de la classe, cela n'affectera pas la valeur de la variable dans l'instance. La sortie du code ci-dessus est la suivante :
avant : 0
avant : 12
après : 666
après : 666
Méthode statique de classe @staticmethon :
SchoolMember(==== % % %= SchoolMember(,,
Dans le code ci-dessus, s'il n'y a pas de @staticmethon, il n'y en aura certainement pas problème dans l'exécution du code, mais lorsque c'est le cas. Lors de l'utilisation de @staticmethod, le système indique qu'un paramètre est manquant. Si nous transformons une méthode en méthode statique, alors cette méthode n’a pas grand-chose à voir avec l’instance.
class SchoolMember(object): def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex member_nums = 0def introduce(self): print("My name is %s,and I am %s year old." %(self.name,self.age)) @classmethod #类方法,不能访问实例变量 def talk(self): print("%s like to study python" %SchoolMember.member_nums) @staticmethod #让方法在类中剥离,与类没有关系,调用要传递参数 def walk(self): print("%s is walking......" %self) #SchoolMember.talk() #不能调用,类是没有办法访问实例变量,只能访问自己 s1 = SchoolMember("Alex",22,"Female") #实例化 s1.walk("alex")
@staticmethod La méthode statique consiste à rendre la méthode de la classe non liée à la classe, et elle ne peut être appelée qu'en passant des paramètres lorsque appel.
Méthode de classe
La méthode de classe passe @classmethod Implémentation du décorateur, le La différence entre les méthodes de classe et les méthodes ordinaires est que les méthodes de classe ne peuvent accéder qu'aux variables de classe et ne peuvent pas accéder aux variables d'instance
class SchoolMember(object): def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex member_nums = 0def introduce(self): print("My name is %s,and I am %s year old." %(self.name,self.age)) #@classmethod #类方法,不能访问实例变量 def talk(self): print("%s like to study python" %self.name) SchoolMember.member_nums #SchoolMember.talk() #不能调用,类是没有办法访问实例变量,只能访问自己 s1 = SchoolMember("Alex",22,"Female") #实例化 s1.talk()
Dans le code ci-dessus, (1) Les classes ne peuvent pas accéder directement aux attributs dans les instances ; (2) @classmethod est utilisé pour permettre au programme d'accéder uniquement aux variables de la classe, telles que SchoolMember dans le code ci-dessus .member_nums, c'est une méthode de classe, nous pouvons y accéder en conversation, mais nous ne pouvons pas accéder à self.name, car @classmethod ne peut accéder qu'aux attributs de classe.
class SchoolMember(object): def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex member_nums = 0def introduce(self): print("My name is %s,and I am %s year old." %(self.name,self.age)) @classmethod #类方法,不能访问实例变量 def talk(self): print("%s like to study python" %self.name) SchoolMember.member_nums #SchoolMember.talk() #不能调用,类是没有办法访问实例变量,只能访问自己 s1 = SchoolMember("Alex",22,"Female") #实例化 s1.talk() 运行结果如下: Traceback (most recent call last): File "/home/zhuzhu/day7/staticmethon方法.py", line 18, in <module>s1.talk() File "/home/zhuzhu/day7/staticmethon方法.py", line 13, in talk print("%s like to study python" %self.name) AttributeError: type object 'SchoolMember' has no attribute 'name'
Comme le montre ce qui précède, le code ci-dessus @classmethon interdit les instances dans le Variables de classe, seules les variables de classe peuvent être utilisées. Autrement dit, self.name, self.age et self.sex ne peuvent pas être utilisés, seules les variables des classes self.nember_nums et SchoolMember.member_nums peuvent être utilisées. Comme suit :
class SchoolMember(object): def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex member_nums = 0def introduce(self): print("My name is %s,and I am %s year old." %(self.name,self.age)) @classmethod #类方法,不能访问实例变量 def talk(self): print("%s like to study python" %SchoolMember.member_nums) SchoolMember.member_nums #SchoolMember.talk() #不能调用,类是没有办法访问实例变量,只能访问自己 s1 = SchoolMember("Alex",22,"Female") #实例化 s1.talk() 运行结果如下:0 like to study python
Méthode d'attribut
Attribut La fonction de la méthode est de transformer une méthode en propriété statique via @property
SchoolMember(==== % % %= SchoolMember(,,
Si @property n'est pas ajouté, le programme peut s'exécuter normalement. Mais après avoir ajouté @property, une erreur se produit lors de l'exécution du programme. Quelle en est la raison ? Parce que @property transforme les méthodes de classe en attributs de classe, lors de l'appel, il suffit d'exécuter s1.walk() sans ajouter de parenthèses, comme suit :
SchoolMember(==== % % %= SchoolMember(,,
Dans le code ci-dessus, @property transforme la méthode de classe en propriété membre. Nous pouvons l'appeler directement en utilisant s1.walk.
Classique vs nouveau style
class A: #经典类的写法,新式类是A(object)尽量少用经典类,都用新式类现在 def __init__(self,name): self.name = name def f1(self): print("f1,搞基")class B(A): def __init__(self,name): super(B,self).__init__(name) # def f1(self): # print("f1,来呀")class C(A): def __init__(self,name): super(C,self).__init__(name) #def f1(self): #print("f1,一起搞!")class D(B,C): pass d = D("Alex") d.f1()
Dans le code ci-dessus, la classe D hérite de la classe B et de la classe C. Lorsque nous exécutons la méthode dans la classe D, nous recherchons d'abord dans la classe B. Cette classe classique et la nouvelle classe The les classes sont toutes identiques. Si la recherche est introuvable, la classe classique est recherchée dans la classe A, tandis que la nouvelle classe est recherchée dans la classe C. L'exemple est le suivant : (Remarque : la différence doit être exécutée dans la version 2. X. 3 Si . (Classe de nouveau style) Exécutez d'abord la classe du même niveau
(2 ) Cours classique (exécuter le précédent cours de premier niveau)
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)

JSON (JavaScriptObjectNotation) est un format d'échange de données léger qui est devenu un format courant pour l'échange de données entre applications Web. La fonction json_encode() de PHP peut convertir un tableau ou un objet en chaîne JSON. Cet article explique comment utiliser la fonction json_encode() de PHP, y compris la syntaxe, les paramètres, les valeurs de retour et des exemples spécifiques. Syntaxe La syntaxe de la fonction json_encode() est la suivante : st

Wedge Nous savons que les objets sont créés de deux manières principales, l'une via Python/CAPI et l'autre en appelant un objet de type. Pour les objets d'instance de types intégrés, les deux méthodes sont prises en charge. Par exemple, les listes peuvent être créées via [] ou list(). La première est Python/CAPI et la seconde est un objet de type appelant. Mais par exemple les objets de classes personnalisées, nous ne pouvons les créer qu'en appelant des objets de type. Si un objet peut être appelé, alors l'objet est appelable, sinon il ne l'est pas. Déterminer si un objet est appelable dépend du fait qu'une méthode est définie dans son objet de type correspondant. comme

Voici comment convertir un tableau de résultats de requête MySQL en objet : Créez un tableau d'objets vide. Parcourez le tableau résultant et créez un nouvel objet pour chaque ligne. Utilisez une boucle foreach pour attribuer les paires clé-valeur de chaque ligne aux propriétés correspondantes du nouvel objet. Ajoute un nouvel objet au tableau d'objets. Fermez la connexion à la base de données.

Utilisez la fonction __contains__() de Python pour définir l'opération de confinement d'un objet. Python est un langage de programmation concis et puissant qui fournit de nombreuses fonctionnalités puissantes pour gérer différents types de données. L'un d'eux consiste à implémenter l'opération de confinement des objets en définissant la fonction __contains__(). Cet article explique comment utiliser la fonction __contains__() pour définir l'opération de confinement d'un objet et donne un exemple de code. La fonction __contains__() est Python

Titre : Utilisation de la fonction __le__() de Python pour définir une comparaison inférieure ou égale de deux objets En Python, nous pouvons définir des opérations de comparaison entre des objets en utilisant des méthodes spéciales. L'une d'elles est la fonction __le__(), qui est utilisée pour définir des comparaisons inférieures ou égales. La fonction __le__() est une méthode magique en Python et est une fonction spéciale utilisée pour implémenter l'opération « inférieur ou égal ». Lorsque nous comparons deux objets en utilisant l'opérateur inférieur ou égal (<=), Python

En PHP, un tableau est une séquence ordonnée et les éléments sont accessibles par index ; un objet est une entité avec des propriétés et des méthodes, créée via le mot-clé new. L'accès au tableau se fait via l'index, l'accès aux objets se fait via les propriétés/méthodes. Les valeurs du tableau sont transmises et les références d'objet sont transmises.

L'objet Request en PHP est un objet utilisé pour gérer les requêtes HTTP envoyées par le client au serveur. Grâce à l'objet Request, nous pouvons obtenir les informations de demande du client, telles que la méthode de demande, les informations d'en-tête de demande, les paramètres de demande, etc., afin de traiter et de répondre à la demande. En PHP, vous pouvez utiliser des variables globales telles que $_REQUEST, $_GET, $_POST, etc. pour obtenir les informations demandées, mais ces variables ne sont pas des objets, mais des tableaux. Afin de traiter les informations demandées de manière plus flexible et plus pratique, vous pouvez

Comment parcourir des objets Javascript ? L'article suivant présentera en détail cinq méthodes de traversée d'objets JS et comparera brièvement ces cinq méthodes. J'espère qu'il vous sera utile !
