我们在使用很多库的时候,往往会用到很多已经定义好的类,如torch中的torch.nn.Module.我们如何能快速的查看类的所有属性和方法,本文将用代码示例为您讲解。
class student():
def __init__(self, name , id ):
self.name = name
self.id = id
def my_len(self):
print("data is loss")
def __len__(self):
return 3
这样我们就定义好了一个类,接下来我来尝试创建一个类的实例,并探索一下类的内部数据的调用。其中a
,b
就是我们创建的实例。
a = student("suke",23)
b = student("youyang",24)
print(a.name)
print(b.id)
b.id = 26
print(b.id)
结果
suke
24
26
我们来尝试一下查看类的属性和方法 ,通过type()
函数可以得到已经创造实例的类名,通过dir()
可以查看该类名下的所有函数。
print(type(a))
print(type(b))
print(dir(student))
结果
<class '__main__.student'>
<class '__main__.student'>
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__len__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'my_len']
我们会发现类内有很多__开头的我们并没有定义的函数,是因为这些都是python类自带的函数,如果没有单独定义则内容为pass
,也可以单独定义。自定义的函数只能用实例名.函数名
来调用,但是如果是python的类内函数可用函数名(实例名)
的方式来调用。以下是一个例子:
b.my_len()
print(b.__len__())
print(len(b))
结果
data is loss
3
3