Introduction aux connaissances pertinentes des classes Python (avec exemples)

不言
Libérer: 2018-11-26 16:46:54
avant
2307 Les gens l'ont consulté

Le contenu de cet article est une introduction aux connaissances pertinentes sur les classes Python (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Attributs de classe Python, attributs d'instance, méthodes de classe, méthodes statiques, méthodes d'instance

Attributs de classe et attributs d'instance

#coding:utf-8
class Student(object):
    name = 'I am a class variable' #类变量
>>> s = Student() # 创建实例s
>>> print(s.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性
Student
>>> print(Student.name) # 打印类的name属性
Student
>>> s.name = 'Michael' # 给实例绑定name属性
>>> print(s.name) # 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性
Michael
>>> print(Student.name) # 但是类属性并未消失,用Student.name仍然可以访问
Student
>>> del s.name # 如果删除实例的name属性
>>> print(s.name) # 再次调用s.name,由于实例的name属性没有找到,类的name属性就显示出来了
Student
Copier après la connexion

Méthodes de classe , méthode d'instance, méthode statique

Méthode d'instance, le premier paramètre doit être passé par défaut à l'objet instance, et il est généralement d'usage d'utiliser self.
Méthode statique, aucun paramètre requis.
Pour les méthodes de classe, le premier paramètre doit être passé par défaut. Il est généralement d'usage d'utiliser cls.

# coding:utf-8
class Foo(object):
    """类三种方法语法形式"""
 
    def instance_method(self):
        print("是类{}的实例方法,只能被实例对象调用".format(Foo))
 
    @staticmethod
    def static_method():
        print("是静态方法")
 
    @classmethod
    def class_method(cls):
        print("是类方法")
 
foo = Foo()
foo.instance_method()
foo.static_method()
foo.class_method()
print('----------------')
Foo.static_method()
Foo.class_method()
Copier après la connexion

Résultat d'exécution :

是类<class &#39;__main__.Foo&#39;>的实例方法,只能被实例对象调用
是静态方法
是类方法
----------------
是静态方法
是类方法
Copier après la connexion

Méthode de classe

Puisqu'il ne peut y avoir qu'une seule méthode d'initialisation dans une classe Python, elle ne peut pas Être basé sur différentes méthodes d'initialisation. Classe d'initialisation de situation, la méthode de classe est principalement utilisée lorsque la classe est utilisée pour définir plusieurs constructeurs.
En particulier, les méthodes statiques peuvent également implémenter les fonctions ci-dessus. Il n'est pas pratique d'écrire le nom de la classe à chaque fois dans une méthode statique.

# coding:utf-8
class Book(object):
 
    def __init__(self, title):
        self.title = title
 
    @classmethod
    def class_method_create(cls, title):
        book = cls(title=title)
        return book
 
    @staticmethod
    def static_method_create(title):
        book= Book(title)
        return book
 
book1 = Book("use instance_method_create book instance")
book2 = Book.class_method_create("use class_method_create book instance")
book3 = Book.static_method_create("use static_method_create book instance")
print(book1.title)
print(book2.title)
print(book3.title)
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!