成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python的hasattr(),getattr(),setattr()

liangdas / 2528人閱讀

1. hasattr(object, name)

  判斷object里是否有name屬性,有就返回True,沒有則返回False。

class MyClass(object):
    name = "jack"
    age = "22"


obj = MyClass()
print(hasattr(obj, "name"))  # True
print(hasattr(MyClass, "age"))  # True
print(hasattr(obj, "gender"))  # False
2. getattr(object, name, [default])

用來獲取object的屬性或方法,有就打印出來. 沒有就打印默認值,若是沒有設置默認值則報錯

class MyClass(object):
    name = "jack"
    age = "22"

    def func(self):
        return "hello world!!!"


obj = MyClass()

print(getattr(MyClass, "name"))  # jack
print(getattr(obj, "age"))  # 22
print(getattr(MyClass, "func"))  # 
print(getattr(obj, "func"))  # >
# print(getattr(MyClass, "func1"))  # 沒有設置默認值,找不到方法會報錯: AttributeError: type object "MyClass" has no attribute "func1"
print(getattr(MyClass, "func1", None))  # 設置了默認值None,找不到就會返回默認值: None

print(getattr(MyClass, "func")("self"))  # hello world!!!
print(getattr(obj, "func")())  # hello world!!!
3. setattr(object, key, value)

用來對object的屬性key賦值value. 若是key存在,則更新value的值. 若key不存在,則先創(chuàng)建屬性key再對其賦值value.

class MyClass(object):
    name = "jack"
    age = "22"


obj = MyClass()

setattr(MyClass, "name", "tom")
print(getattr(MyClass, "name"))  # tom

setattr(obj, "age", 28)
print(getattr(obj, "age"))  # 28

setattr(MyClass, "gender", "male")
print(getattr(MyClass, "gender"))  # male
print(getattr(obj, "gender"))  # male

setattr(obj, "hobby", "skating")
print(obj, "hobby")  # <__main__.MyClass object at 0x00000209F5070630> hobby
print(MyClass, "hobby")  #  hobby

三個方法一起用:

class MyClass(object):
    name = "jack"
    age = "22"


# 判斷Myclass是否有gender屬性,有則打印,沒有則添加
def if_attr(gender="male"):
    if hasattr(MyClass, "gender"):
        return getattr(MyClass, "gender")
    return setattr(MyClass, "gender", gender)


if_attr(gender="female")
print(getattr(MyClass, "gender"))  # female

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/42874.html

相關文章

  • python--面向對象進階

    摘要:它首先被程序語言的設計領域所采用并在和面向對象方面取得了成績。面向對象中的反射通過字符串的形式操作對象相關的屬性。注構造方法的執(zhí)行是由創(chuàng)建對象觸發(fā)的,即對象類名而對于方法的執(zhí)行是由對象后加括號觸發(fā)的,即對象或者類執(zhí)行執(zhí)行邏輯題 isinstance和issubclass 1.isinstance(obj,cls)檢查是否obj是否是類 cls 的對象 #!/usr/bin/env py...

    Profeel 評論0 收藏0
  • 經驗拾憶(純手工)=> Python好用深度技能工具介紹

    摘要:單元素元祖這是整數這才是元祖也許這兩行,你們當時疑惑過,并且現在也都知道了,當然重點并不在這里。。雖然我水平很垃圾,但是我知道匿名函數有一種執(zhí)行方式叫做自執(zhí)行。看吧,這就是版的匿名函數自執(zhí)行方法。 單元素元祖: a = (1) # 這是整數1 a = (1,) # 這才是元祖 也許這兩行,你們當時疑惑過,并且現在也都知道了,當然重點并不在這里。。 我無聊的時候想過,為什么單...

    UnixAgain 評論0 收藏0
  • Python動態(tài)屬性和特性

    摘要:一利用動態(tài)屬性處理數據源屬性在中,數據的屬性和處理數據的方法統稱屬性。處理無效屬性名在中,由于關鍵字被保留,名稱為關鍵字的屬性是無效的。內置函數列出對象的大多數屬性。點號和內置函數會觸發(fā)這個方法。 導語:本文章記錄了本人在學習Python基礎之元編程篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、了解如何利用動態(tài)屬性處理數據;2、掌握Pyth...

    scola666 評論0 收藏0
  • Werkzeug Local與LocalProxy等淺析

    摘要:線程局部變量,也就是每個線程的私有變量,具有線程隔離性。按我們正常的理解,應該是每一個請求對應一個處理線程。在中,除了線程之外,還有個叫協程的東東,這里不提進程。配合會確保不管是協程還是線程,只要當前請求處理完成之后清除中對應的內容。 首先貼出官方文檔地址:http://werkzeug.pocoo.org/doc...幾個local?threading.localwerkzeug.l...

    The question 評論0 收藏0
  • python:改良廖雪峰使用元類自定義ORM

    摘要:概要本文僅僅是對廖雪峰老師的使用元類自定義進行改進,并不是要創(chuàng)建一個框架編寫,刪除了參數,參數全部為定義字段類型相關參數,和眾多有名的相同,使用反射,方便字段的擴展,如本例使用就是反射的應用字段類型字段長度字段默認值,如果想擴展可以填寫更多 概要 本文僅僅是對廖雪峰老師的使用元類自定義ORM進行改進,并不是要創(chuàng)建一個ORM框架 編寫field class Field(object): ...

    張遷 評論0 收藏0

發(fā)表評論

0條評論

liangdas

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<