[英]How to list the variables or attribute inside a function of a class?
示例代碼:
class hello:
cls_var_name='Hello_Class'
def setdata(self, value):
self.data=value
fun1_var_name='Setdata_Function'
def showdata(self):
fun2_var_name='Showdata_Function'
print(self.data)
因此,借助dir()
函數,我們可以列出一個類的所有屬性。 但是如何在類的函數中列出變量/屬性。
演示:
>>> dir(hello)
['__doc__', '__module__', 'cls_var_name', 'setdata', 'showdata']
>>>
>>> dir(hello.setdata)
['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__format__', '__func__', '__get__',
'__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'im_class', 'im_func', 'im_self']
>>>
>>> dir(hello.showdata)
['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__format__', '__func__', '__get__',
'__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'im_class', 'im_func', 'im_self']
在上面的輸出中,您可以在dir(hello)
結果中看到類的屬性列表: 'cls_var_name', 'setdata', 'showdata'
但是對於dir(hello.setdata)
和dir(hello.showdata)
結果,它列出了所有相關屬性,但沒有fun1_var_name
和fun2_var_name
變量,為什么?
原因是dir
函數顯示綁定到對象的屬性和屬性的列表。 fun_var_name
不是setdata
方法的屬性,它是一個存在於方法主體范圍內的變量,一旦退出就會被丟棄。
因此,當您調用dir(hello.showdata)
時,除非在showdata
方法內進行調用, func2_var_name
不存在,但即使存在,該變量仍然不會使用dir
函數出現,因為它未綁定到可調用對象方法對象。 (“可調用方法對象”只是方法的另一個術語,但它強調了方法,就像 python 中的幾乎所有東西一樣,也是對象。)
如果您想要的是訪問變量名稱列表的方法,您可以使用vars()
函數,但它只會顯示已經定義且在當前范圍內的變量。 像這樣:
class hello:
cls_var_name='Hello_Class'
def setdata(self, value):
self.data=value
fun1_var_name='Setdata_Function'
print(vars())
def showdata(self):
fun2_var_name='Showdata_Function'
print(self.data)
print(vars())
無法從方法主體外部獲取變量名稱,因為這些變量不存在。
可以使用inspect
模塊並獲取實際源代碼的案例,但我認為這不是您的想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.