首頁 >後端開發 >Python教學 >python類別的相關知識介紹(附範例)

python類別的相關知識介紹(附範例)

不言
不言轉載
2018-11-26 16:46:542364瀏覽

這篇文章帶給大家的內容是關於python類別的相關知識介紹(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

Python-類別屬性,實例屬性,類別方法,靜態方法,實例方法

類別屬性和實例屬性

#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

類別方法,實例方法,靜態方法

實例方法,第一個參數必須要預設傳實例對象,一般習慣用self。
靜態方法,參數沒有要求。
類別方法,第一個參數必須要預設傳類,一般習慣用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()

運行結果:

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

類別方法

#由於python類別中只能有一個初始化方法,不能依照不同的情況初始化類,類別方法主要用於類別用在定義多個建構函數的情況。
特別說明,靜態方法也可以實現上面功能,當靜態方法每次都要寫上類別的名字,不方便。

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

以上是python類別的相關知識介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除