python中型別檢測的兩種方法

2022-08-20 07:42:09 字數 1821 閱讀 4496

1.使用描述符+類的裝飾器

class

typed:

def__init__

(self,key,type):

self.key=key

self.type=type

def__get__

(self, instance, owner):

return instance.__dict__

[self.key]

def__set__

(self, instance, value):

ifnot

isinstance(value,self.type):

raise typeerror("

%s 不是%s

" %(value,self.type))

instance.

__dict__[self.key]=value

def__delete__

(self, instance):

instance.

__dict__

.pop(self.key)

def test(**kwargs):

deftest1(func):

for i,o in

kwargs.items():

setattr(func,i,typed(i,o))

return

func

return

test1

@test(name=str)

class

people:

#name=typed("name",str)#要設定型別 通過設定後可以不用這麼麻煩可以直接修飾

#age=typed("age",int)

def__init__

(self,name,age,salary):

self.name=name

self.age=age

self.salary=salary

s=people("

rxy",123,123)

print

(s.name)

print(people.__dict__)

2.使用property的補充

class

people:

def__init__

(self,name):

self.name=name #

例項化就觸發property

@property

defname(self):

#return self.name #無限遞迴

print('

get------>')

return

self.douniwan

@name.setter

defname(self,value):

print('

set------>')

ifnot

isinstance(value,str):

raise typeerror('

必須是字串型別')

self.douniwan=value

@name.deleter

defname(self):

print('

delete------>')

delself.douniwan

p1=people('

alex

') #

self.name實際是存放到self.douniwan裡

p1.name="1"

print(p1.__dict__

)print()

vue vue中引入echarts的兩種方式

1.安裝echarts依賴 npm install echarts s 2.建立圖表 a 全域性引入 main.js頁面 import echarts from echarts vue.prototype.echarts echartshello.vue頁面 b 按需引入 上面全域性引入會將所有的e...

Redhat nis client兩種接入方式

redhat nis client兩種接入方式 在redhat上nis client有兩種方式接入nis伺服器 etc nsswitch.conf和system config authentication 通過 etc nsswitch.conf的方式使用者只能通過yppasswd進行修改密碼且無法...

python threading 兩種建立方式

作用 建立在thread模組之上,可以更容易地管理多個執行執行緒。通過使用執行緒,程式可以在同乙個程序空間併發地執行多個操作。threading模組建立在thread的底層特性基礎上,可以更容易地完成執行緒處理。1 呼叫函式 要使用thread,最簡單的方法就是用乙個目標函式例項化乙個thread物...