Re: [問題] 迭代物件中的所有非私有方法和欄位?
→
06/23 14:57,
06/23 14:57
→
06/23 14:58,
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,
11/02 00:43
→
11/02 00:44,
11/02 00:44
→
11/02 00:45,
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
06/23 18:34, 1F
→
06/23 18:34, , 2F
06/23 18:34, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):