Maison >développement back-end >Tutoriel Python >Introduction aux connaissances pertinentes des classes Python (avec exemples)

Introduction aux connaissances pertinentes des classes Python (avec exemples)

不言
不言avant
2018-11-26 16:46:542348parcourir

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

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()

Résultat d'exécution :

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

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)

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer