import inspect
class CatClass(object):
name = ""
age = 0
def __init__(self, name="", age=0):
self.name = name
self.age = age
def __getattribute__(self, item):
print('正在获取属性{}'.format(item))
return super(CatClass, self).__getattribute__(item)
def func1(self):
pass
def func2(self):
pass
# 成员函数
functions = inspect.getmembers(CatClass, lambda a: inspect.isfunction(a))
print(functions)
functions1 = list(filter(lambda x: not x[0].startswith('__'), functions))
print(functions1)
# 成员属性
attributes = inspect.getmembers(CatClass, lambda a: not inspect.isfunction(a))
print(attributes)
attributes1 = list(filter(lambda x: not x[0].startswith('__'), attributes))
print(attributes1)
print("*"*30)
cat = CatClass("Tome", 11)
print(cat.name)
print(cat.age)
# print(dir(CatClass()))
#
# cat = CatClass
# ['__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__', 'age', 'name']
# ['__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__', 'age', 'func1', 'name']