日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python模型的属性是什么_python – Django:为什么Django模型字段的类属性?

發布時間:2025/3/11 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python模型的属性是什么_python – Django:为什么Django模型字段的类属性? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不,原因與此相同:

>>> class Foo(object):

... bar = 'Foo attribute'

...

>>> f = Foo()

>>> f.bar

'Foo attribute'

>>> Foo.bar

'Foo attribute'

>>> f.bar = 'instance attribute'

>>> f.bar

'instance attribute'

>>> Foo.bar

'Foo attribute'

當您將屬性分配給對象時,該對象的同名的類屬性將被“黯然失色”.然而,在屬性查找中,如果所討論的對象沒有定義所述屬性,則將返回類1.

在Django中,ORM層使用這些類屬性來生成轉換為SQL查詢和操作的機制(深層次的元類魔術在幕后).

編輯:回答你的問題 –

要理解,您需要了解一些關于Python的data model.基本上,類和對象都有命名空間.如果你偷看他們的特殊__dict__屬性,這是很明顯的:

>>> print Foo.__dict__

{'__dict__': , '__weakref__':

'__weakref__' of 'Foo' objects>, '__module__': '__main__', 'bar': 'Foo attribute

', '__doc__': None}

>>> f = Foo()

>>> print f.__dict__

{}

當對象f首次創建時,它有一個空的命名空間.當你做一個查找,f.bar,這個命名空間(真的,一個字典)被查找.由于沒有發現’bar’屬性,所以f的類Foo被查找.我們在那里找到’bar’:’Foo屬性’.所以這將是什么回報:

>>> f.bar

'Foo attribute'

現在,當您為某個對象分配屬性值,并且該屬性名稱在其命名空間中尚不存在時,將創建它:

>>> f.bar = 'instance attribute'

>>> print f.__dict__

{'bar': 'instance attribute'}

>>> f.bar

'instance attribute'

現在,你知道下一次f.bar是怎么回事! f .__ dict __ [‘bar’]存在,并在我們再看Foo的命名空間之前返回.

當然,如果您的意圖是始終訪問和操作類的屬性而不是實例,則需要使用類的名稱.

>>> Foo.bar

'Foo attribute'

>>> Foo.__dict__['bar']

'Foo attribute'

總結

以上是生活随笔為你收集整理的python模型的属性是什么_python – Django:为什么Django模型字段的类属性?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。