亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中描述器有哪些分類

發布時間:2021-05-09 15:51:22 來源:億速云 閱讀:176 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關python中描述器有哪些分類,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

Python的優點有哪些

1、簡單易用,與C/C++、Java、C# 等傳統語言相比,Python對代碼格式的要求沒有那么嚴格;2、Python屬于開源的,所有人都可以看到源代碼,并且可以被移植在許多平臺上使用;3、Python面向對象,能夠支持面向過程編程,也支持面向對象編程;4、Python是一種解釋性語言,Python寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序;5、Python功能強大,擁有的模塊眾多,基本能夠實現所有的常見功能。

1、非數據描述器

非數據描述器,只對類屬性產生作用。當訪問類屬性時,將調用描述器的__get__方法。當非數據描述器是實例的變量時,實例訪問非數據描述器不會調用__get__方法,只是訪問了描述器類的實例。

# 示例
class Student1:
    def __init__(self):
        self.course = 'Python'
        print('Student1.__init__')
 
class Student2:
    stu1 = Student1()     # Student1()返回的是Student1類的實例
 
    def __init__(self):
        print('Student2.__init__')
 
print(Student2.stu1.course)
 
# 創建Student2的實例對象
stu2 = Student2()
print(stu2.stu1.course)
 
 
# 示例:引入描述器
class Stduent1:
    def __init__(self):
        self.course = 'Python'
        print('Stduent1.__init__')
 
    def __get__(self, instance, owner):
        print('self={} instance={} owner={}'.format(self, instance, owner))
 
class Stduent2:
    stu1 = Stduent1()
    def __init__(self):
        print('Stduent2.__init__')
 
print(Stduent2.stu1.course)
# Stduent2.stu1會訪問Stduent1的實例,默認會調用__get__方法,但是__get__方法沒有將實例返回,因此,Stduent2.stu1.course會報錯
 
stu2 = Stduent2()
print(stu2.stu1.course)  # 一樣的報錯
 
 
# 示例 引入描述器
class Stduent1:
    def __init__(self):
        self.course = 'Python'
        print('Stduent1.__init__')
 
    def __get__(self, instance, owner):
        # 這里的self為Stduent1的實例. instance為實例, 如果是類訪問,那么instance為None. owner是調用者的類
        print('self={} instance={} owner={}'.format(self, instance, owner))
        return self # 返回Student1的實例self
 
class Stduent2:
    stu1 = Stduent1()
    def __init__(self):
        print('Stduent2.__init__')
 
print(Stduent2.stu1.course)
 
stu2 = Stduent2()
print(stu2.stu1.course)

2、數據描述器

數據描述器,針對類屬性和實例屬性都產生作用。當訪問或者修改此屬性時,將調用相應的__get__或者__set__方法。

# 示例1:
class Student1:
    def __init__(self):
        self.course = 'Python'
        print('Student1.__init__')
 
    def __get__(self, instance, owner):
        # 這里的self為Student1的實例. instance為實例, 如果是類訪問,那么instance為None. owner是調用者的類
        print('self={} instance={} owner={}'.format(self, instance, owner))
        return self   # 返回Student1的實例self
 
class Student2:
    stu1 = Student1()
 
    def __init__(self):
        print('Student2.__init__')
        self.y = Student1()   # 沒有調用__get__方法
 
print(Student2.stu1.course)
 
stu2 = Student2()
print(stu2.y)
 
 
# 示例,數據描述器
class Student1:
    def __init__(self):
        self.course = 'Python'
        print('Student1.__init__')
 
    def __get__(self, instance, owner):
        print('self={} instance={} owner={}'.format(self, instance, owner))
        return self
 
    def __set__(self, instance, value):
        print('self={} instance={} value={}'.format(self, instance, value))
        self.course = value
 
class Student2:
    stu1 = Student1()
 
    def __init__(self):
        print('Student2.__init__')
        self.y = Student1()   # 調用了__get__方法
 
print(Student2.stu1.course)
 
stu2 = Student2()
print(stu2.stu1)

關于python中描述器有哪些分類就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇平县| 会泽县| 景泰县| 金湖县| 汶上县| 黎城县| 南木林县| 龙山县| 高清| 湟源县| 资兴市| 醴陵市| 昭苏县| 德令哈市| 龙泉市| 航空| 高雄县| 瑞昌市| 梅州市| 宜昌市| 沙洋县| 南安市| 木兰县| 饶河县| 太保市| 汉源县| 屯昌县| 个旧市| 安丘市| 襄城县| 井陉县| 云南省| 龙游县| 叶城县| 凤台县| 泾源县| 永修县| 扶绥县| 运城市| 平果县| 思南县|