溫馨提示×

溫馨提示×

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

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

面向?qū)ο骭doc_module_class_dict_str_get_set_delitem

發(fā)布時間:2020-06-16 21:19:43 來源:網(wǎng)絡(luò) 閱讀:274 作者:leiwenbin627 欄目:編程語言

#__module__ __class__

Lib\aa.py

class C:
    def __init__(self):
        self.name='lwb'

 

當(dāng)前目錄

index.py

from lib.aa import C
obj=C()
print( obj.__module__) #輸出類來自哪個模塊 輸出lib.aa ,即:輸出模塊
print(obj.__class__) #輸出類本身名 輸出類 lib.aa.C

 

#__dict__ __doc__ __str__

class   Dog(object):

'''定義Dog類'''
    def __init__(self,name):
        self.name=name
        self.__food=None #空變量

    @property   #方法轉(zhuǎn)屬性(函數(shù)轉(zhuǎn)變量)
    def eat(self):
        print("%s is eating %s"%(self.name,self.__food)) #先傳一個空變量 self.__food
    @eat.setter   #修改
    def eat(self,food):
        print("set to food:",food)
        self.__food=food #將food傳入 空變量
    @eat.deleter #刪除
    def eat(self):
        del self.__food
        print("刪完了")

    def __call__(self,*args,**kwargs):
        print("runing call",args,kwargs)

    def __str__(self):
        return "<obj:%s>"%self.name

d=Dog("chenronghua")
d() #加了括號不能引用 調(diào)用的是__call__方法
d(1,2,3,name1="lei") #調(diào)用的是__call__方法,還可以傳入?yún)?shù)字典
Dog("chenronghua")()

#查看屬性

Print(Dog.__doc__) #輸出類的描述信息
print(Dog.__dict__) #__dict__ 打印類里的所有屬性,不包括實例屬性
print(d.__dict__) #__dict__ 打印所有實例屬性,不包括類屬性

print(d) #本來打印d這個對象的內(nèi)存地址 定義__str__ 之后 ,就以__str__下的特定顯示方式顯示,不在顯示內(nèi)存地址,比如讓他顯示對象里面特定的屬性

 

#__getitem__ __setitem__ __delitem__
class Foo(object):
    def __init__(self):
        self.data={}  #初始化成字典
    def __getitem__(self, key):
        print('__getitem__', key)
        return self.data.get(key)

    def __setitem__(self, key, value):
        print('__setitem__', key, value)
        self.data[key]=value #實例變成字典


    def __delitem__(self, key):
        print('__delitem__', key)

obj=Foo()
obj["name"]="alex" #運(yùn)行__setitem__
print(obj.data) #運(yùn)行__setitem__ self.data[key]=value 生成字典

print(obj["name"]) #運(yùn)行__getitem__ 并打印返回name的value 值


del obj["name"] #運(yùn)行__delitem__ 并不是真正刪除name key

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI