2023年9月30日 property流程分析

2022-08-13 12:51:20 字數 1388 閱讀 8627

靜態屬性不能傳引數。

類能呼叫靜態屬性,只是返回的是乙個物件。

描述符的get方法   

class

lazyproperty:

def__init__

(self,func):

print('

>>>>>

',func)

self.func=func

def__get__(self, instance, owner):#

self 是lazyproperty()生成的物件

print('

get方法')

if instance is

none:

return self #

如果instance 是none,就返回lazyproperty(area)也就是self

return self.func(instance)#

instance含義是傳遞的例項本身,owner是產生instance的類

class

room:

#描述符在被修飾的類中去定義

#area=lazyproperty(area)#描述符操作,但是下面的@lazyproperty 就是在做相同的事情

def__init__

(self,name,width,length):

self.name=name

self.width=width

self.length=length

#@property #靜態屬性 有@實際就在執行 area=property(area) 相當於對property 做例項化。可以是函式,也可以是類,都能實現裝飾器效果,實現了給類增加描述符area=property(area)

@lazyproperty

defarea(self):

return self.width*self.length

@property

deftest(self):

return

"test"#

r1=room('cs',2,4)

#print(r1.area) #此處呼叫的是lazyproperty(area)後返回賦值的area,觸發非資料描述符

## print(r1.area.func(r1))#純手動觸發執行

print(room.test) #

系統的property返回的是乙個物件 property(test)

print(room.area) #

因為area被**,所以會觸發描述符,無法執行self.func(instance) 用類去呼叫的時候,instance是none0

get方法

<__main__.lazyproperty object at 0x03150090>

2023年9月18日總結

這幾天各種綜合測評的事感覺狀態沒有自己想象中的好,當然這也不是自己不好好看部落格的理由。這幾天沉迷於數論中無法自拔,又找了一些容斥定理的東西,找了乙個總結性的部落格,然後前幾道還好,後來有一道組合數的題卡了我兩天,今天上概率論的時候突然恍然大悟。題意是 給出乙個方程 x1 x2 x3 x4 x5 x...

2023年9月28日總結

今天上午開會,翹了小組的討論,哎,沒辦法。其實自己想了很多東西,感覺自己也是乙個容易想多的人,想著自己的不足之處,想著自己和別人的差距,但說實話想的和現實一直都是不對等的。就拿乙個 題來說,想的思路雖然可以讓你寫出乙個題的 框架,但實現的過程,往往會遇到各種問題,有可能在實驗敲 的過程中會發現有更好...

2023年9月29日總結

今天出去吃了自助,好滿足。今天晚上開始看題,主要看的是排列組合,組合數這一塊感覺和概率還是挺相似的,有很多共性的東西,需要注意的細節也就是有除法要用到逆元,快速冪處理就行。單純的排列組合還好,今天看到好幾道組合數和dp,圖論的結合,一想也不能每次都逃避,每次都只是去收藏,然後今天就看了,其實只要一步...