在orm示例中,關於getattr的問題?

時間 2021-06-21 01:40:30

1樓:普欒

在教程中,能夠通過getattr(self, k, None)返回屬性值,是因為在model類中定義了__getattr__函式,故而getattr(self, k, None)=self.k(這裡的k換作id、name、email等) 換句話說你返回的這個屬性並非真正的屬性,而是self[key]字典查詢的內容

2樓:瘋梓黃

在Python官方文件裡面關於getattr方法描述如下:

getattr(object, name[, default])

Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object』s attributes, the result is the value of that attribute.

For example, getattr(x,

'foobar') is equivalent to x.foobar. If the named attribute does not exist, default is returned if provided, otherwise AttributeError

is raised.

因此getattr函式是遵守Python預設的描述器協議訪問機制的,但是這個getattr函式是用於訪問物件屬性的,Python dict裡面的key可不能作為乙個屬性被訪問。

你的example中如果把id屬性去掉,就會報AttributeError:

In [20]: class User(dictdef __init__(self, **kwsuper(User, self).__init__(**kwname = 'neo'In [21]:

u = User(id='345', name='Liu')

In [22]: getattr(u, 'id'AttributeErrorTraceback (most recent call last)

in ()

----> 1 getattr(u, 'id'global getattr = undefined

global u =

AttributeError: 'User' object has no attribute 'id'

> (1)()

----> 1 getattr(u, 'id')

ipdb> getattr(u, 'name')

'neo'

在飛雪連天的日子裡在文學作品中關於愛情的最讓人難忘或者動情的詩句 段落亦或者是情境有哪些?

村雨 現在是赤烏六年,那個血腥的時代還未開始,在這個遙遠的北國,男人和女人相愛,在寒冷的冬天裡裸衣纏綿。在這個悲哀的世上,還有什麼比這更溫暖的事麼?霏霏的雪花飄落,細薄地蓋在窗簷上,暖暖的冬屋燒著熱酒,閉目側聽遠方長門僧赤腳踏在雪地吹頌那遙遠的 我不想你死,我坐在馬車裡,摸到那個玉佩,忽然想起那時候...

在哲學層面,是否有 關於 人類意識(認知)中的存在 和 非人類意識(認知)中的存在 的討論?

關於意識和存在。西方哲學史上有兩個人的觀點爭鋒相對,挺有趣。那就是康德和黑格爾。康德 說 物自體,是存在 但,意識與物自體間有屏障。就如,有一層玻璃。物自體就像玻璃缸裡的魚。只能看,不能摸。黑格爾 說 在我看來,你也是玻璃缸裡的魚。我也只能看,而摸不到你。意識就是物自體存在 當然,以上,都是康德與黑...

關於C 在函式中建立指標的兩個問題?

已登出 指標就是個位址,好比你家房本指著你家房子在某地,你家房子那塊地因為拆遷被買走並不意味著你家房子立馬就被拆了,得等人家開發商決定要拆才會開始拆。還沒有被重新使用過的記憶體一般是不會去專門覆蓋原始的內容的。 RednaxelaFX 問題1 為什麼 delete ps 後仍然能輸出ps?這是未定義...