Tôi muốn lấy tên của các đối số từ khóa của các phương thức của một lớp. Tôi nghĩ rằng tôi hiểu cách lấy tên của các phương pháp và cách lấy tên biến của một phương pháp cụ thể, nhưng tôi không biết cách kết hợp các tên này:Nhạy cảm về Python: Cách nhận các biến của các phương thức lớp?
class A(object):
def A1(self, test1=None):
self.test1 = test1
def A2(self, test2=None):
self.test2 = test2
def A3(self):
pass
def A4(self, test4=None, test5=None):
self.test4 = test4
self.test5 = test5
a = A()
# to get the names of the methods:
for methodname in a.__class__.__dict__.keys():
print methodname
# to get the variable names of a specific method:
for varname in a.A1.__func__.__code__.co_varnames:
print varname
# I want to have something like this:
for function in class:
print function.name
for varname in function:
print varname
# desired output:
A1
self
test1
A2
self
test2
A3
self
A4
self
test4
test5
Tôi sẽ phải để lộ tên các phương thức và đối số của chúng cho một API bên ngoài. Tôi đã viết một ứng dụng xoắn để liên kết đến api đã đề cập và ứng dụng xoắn này sẽ phải xuất bản dữ liệu này thông qua api.
Vì vậy, tôi nghĩ rằng tôi sẽ sử dụng một cái gì đó như:
for methodname in A.__dict__.keys():
if not methodname.startswith('__'):
print methodname
for varname in A.__dict__[methodname].__code__.co_varnames:
print varname
Một lần, môi trường xung quanh có được ổn định hơn, tôi sẽ suy nghĩ về một giải pháp tốt hơn.
Tại sao bạn muốn thực hiện việc này? – ironfroggy
python 2.5 không thích A .__ dict __ [methodname] .__ code __. Co_varnames - đối tượng 'function' không có thuộc tính '__code__' Sử dụng kiểm tra có thể ổn định hơn giữa các phiên bản python. –