Re: [問題] 迭代物件中的所有非私有方法和欄位?

看板Python作者 (←這人是超級笨蛋)時間8年前 (2017/06/23 17:09), 8年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)

06/23 14:57,
__dict__
06/23 14:57

06/23 14:58,
漏看要對內建型別也有用, 這樣 global dir() 比較好
06/23 14:58
: 可是u大 dir後要怎樣過濾方法還是屬性呢 最正規的答案是沒有辦法, 因為 Python 沒有在分... 假設你有個 class 長這樣 class A: def __init__(self): self.x = 0 def f(self): print('hi') 你可能會想說 x 是屬性, f 是方法 但事情並沒有這麼簡單 如果我這樣... class A: def __init__(self): self.x = 0 self.y = self.f def f(self): print('hi') 那麼 y 是屬性嗎?但它和 f 的行為完全一樣 所以你根本分不出來... 所以你必須想好你真的想要的是什麼 如果你想知道的是「哪些屬性可以被呼叫」 那麼你可以用 callable() 函式 >>> a = A() >>> callable(a.f) True >>> callable(a.x) False >>> callable(a.y) True 如果你想知道哪些屬性是 function (不包含 class 和有定義 __call__ 的物件) 可以用 inspect.isfunction() 如果你想要知道哪些屬性是 method (只包含有 bound 到某個 instance 的 function) 那就用 inspect.ismethod() 還有一些其他微妙差異就交給你自己發現 另外如果你打算用 inspect 可以考慮搭配 inspect.getmembers() 的 predicate 省一些功夫 -- 作者 Linux (Windows) 看板 C_and_CPP 標題 [問題] 如何確認是否 free 對記憶體 時間 Fri Nov 2 00:14:03 2012

11/02 00:43,
valgrind, 但 windowns 版的沒試過XD
11/02 00:43

11/02 00:44,
linux 上那真的是不二選擇了
11/02 00:44

11/02 00:45,
我是用 Windows ....>"<
11/02 00:45
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.19.12 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1498208971.A.CE0.html ※ 編輯: uranusjr (218.161.19.12), 06/23/2017 17:10:36

06/23 18:34, , 1F
非常感謝u大 被開導了一課xd
06/23 18:34, 1F

06/23 18:34, , 2F
推詳細說明
06/23 18:34, 2F
文章代碼(AID): #1PJDhBpW (Python)
文章代碼(AID): #1PJDhBpW (Python)