中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么掌握Python內置方法和屬性應用

發布時間:2021-11-01 16:52:26 來源:億速云 閱讀:133 作者:iii 欄目:編程語言

本篇內容介紹了“怎么掌握Python內置方法和屬性應用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1. 前言

python除了豐富的第三方庫外,本身也提供了一些內在的方法和底層的一些屬性,大家比較常用的如dict、list、set、min、max、range、sorted等。

2. 內置方法和函數介紹

  •  enumerate

  如果你需要遍歷可迭代的對象,有需要獲取它的序號,可以用enumerate, 每一個next返回的是一個tuple

list1 = [1, 2, 3, 4]    list2 = [4, 3, 2, 1]    for idx, value in enumerate(list1):        print(idx, value, list2[idx])    # 0 1 4    # 1 2 3    # 2 3 2    # 3 4 1
  •  zip zip從參數中的多個迭代器取元素組合成一個新的迭代器; 

# 給list加上序號    b = [4, 3, 2, 1]    for i in zip(range(len(b)), b):        print(i)    # (0, 4)    # (1, 3)    # (2, 2)    # (3, 1)
  •  globals():一個描述當前執行過程中全局符號表的字典,可以看出你執行的所有過程

  •  id(object):python對象的唯一標識

  •  staticmethod 類靜態函數注解   

@staticmethod        def test():           print('this is static method')      Foo.test = test      Foo.test()
  •  類的屬性 我們來看下一個類的申明,如下:   

class Foo():         """this is test class"""         def __init__(self, name):             self.name = name          def run(self):             print('running')
# 列出類的所有成員和屬性   dir(Foo)   ['__class__',   '__delattr__',   '__dict__',   '__dir__',   '__doc__',   '__eq__',   '__format__',  '__ge__',   '__getattribute__',   '__gt__',   '__hash__',   '__init__',   '__init_subclass__',   '__le__',   '__lt__',   '__module__',   '__ne__',   '__new__',   '__reduce__',   '__reduce_ex__',   '__repr__',   '__setattr__',   '__sizeof__',   '__str__',   '__subclasshook__',   '__weakref__',   'run']   # 類的注釋   Foo.__doc__   # 'this is test class'   # 類自定義屬性   Foo.__dict__   mappingproxy({'__module__': '__main__',             '__doc__': 'this is test class',             '__init__': <function __main__.Foo.__init__(self, name)>,             'run': <function __main__.Foo.run(self)>,             '__dict__': <attribute '__dict__' of 'Foo' objects>,             '__weakref__': <attribute '__weakref__' of 'Foo' objects>})   # 類的父類   Foo.__base__   # 類的名字   Foo.__name__

類的實例化和初始化 

# python類先通過__new__實例化,再調用__init__進行初始化類成員      foo = Foo('milk')

類的屬性添加和訪問 

# 類的訪問     foo.name     foo.run()    # 可以通過setattr 動態的添加屬性     def method():         print("cow")     setattr(foo, "type", "cow")     setattr(foo, "getcow", method)     # cow     foo.type     foo.getcow()     # 動態刪除屬性 delattr     delattr(foo, "type")     # getattr 獲取成員屬性     if hasattr(foo, "run"): # 判斷是否有屬性         func = getattr(foo, "run")         func()

3. 單例模式應用

單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。單例模式要求在類的使用過程中只實例化一次,所有對象都共享一個實例。創建的方法是在實例的時候判斷下是否已經實例過了,有則返回實例化過的全局實例。python是如何實現的呢?關鍵是找到實例化的地方,對就是前面說的__new__

class Singleton(object):      def __new__(cls, *args, **kwargs):          if not hasattr(cls, '_instance'):              cls._instance = object.__new__(cls)          return cls._instance       def __init__(self, name):          self.name = name  a = Singleton('name1')  b = Singleton('name2')  print(id(a), id(b))  print(a.name, b.name)  # 1689352213112 1689352213112  # name2 name2

4. 反射應用

反射在許多框架中都有使用到,簡單就是通過類的名稱(字符串)來實例化類。一個典型的場景就是通過配置的方式來動態控制類的執行,比如定時任務的執行,通過維護每個定時任務類的執行時間,在執行時間到的時候,通過反射方式實例化類,執行任務,在java中也非常的常見。

python的實現可以通過上面說的getattr獲取模塊中的類, 通過methodcaller來調用方法。我們來看一個簡單的例子

import importlib  from operator import methodcaller  class Foo():      """this is test class"""      def __init__(self, name):          self.name = name       def run(self, info):          print('running %s' % info)  # 類所在的模塊,默認情況__main__, 可以通過Foo.__dict__ 中'__module__'獲取  api_module = importlib.import_module('__main__')   # getattr獲取模塊中的類, 這里Foo是字符串哦  clazz = getattr(api_module, 'Foo')  # 實例化  params = ["milk"]  instance = clazz(*params)  # 方法調用, 方法也是字符串methodcaller(方法名, 方法參數)  task_result = methodcaller("run", "reflection")(instance)  # running reflection

“怎么掌握Python內置方法和屬性應用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

夏津县| 曲阳县| 开化县| 永安市| 应城市| 崇阳县| 辽阳市| 萨迦县| 三台县| 句容市| 孟村| 濉溪县| 类乌齐县| 长垣县| 沧源| 增城市| 车险| 偏关县| 溧水县| 文昌市| 临夏县| 松桃| 沛县| 昌图县| 高邮市| 龙岩市| 浦东新区| 武宁县| 栾城县| 方山县| 定兴县| 九台市| 顺义区| 渝北区| 潍坊市| 磐石市| 武功县| 宁安市| 贵阳市| 大连市| 常宁市|