打印类的相关属性
print(dec.__doc__) #类的说明
print(dec.__name__) #类的名字
print(dec.__module__) #从哪个地方开始执行
print(dec.__bases__) #类的父类
print(dec.__dict__) #类的所有属性放在字典
实例方法
定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
调用:只能由实例对象调用。
类方法
定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类里的属性和方法(不能传实例的属性和方法);
调用:实例对象和类对象都可以调用。
静态方法
定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
调用:实例对象和类对象都可以调用
静态方法:静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性的代码,逻辑上属于类,但是和类本身没有关系,也就是说在静态方法中,不会涉及到类中的属性和方法的操作。可以理解为,静态方法是个独立的、单纯的函数,它仅仅托管于某个类的名称空间中,便于使用和维护。
class base:
def __init__(self):
print("in the base")
class A(base):
name = "weiwei" #供类方法使用
def __init__(self,aa,bb):
super(A,self).__init__()
self.aa = aa
self.bb = bb
print("A__init__")
@staticmethod
def method1(m1):
print("para method1 %s"%(m1))
@classmethod
def method2(cls):
print("%s in the method2"%(cls.name))
def method3(self):
print("in the method3 ",self.aa,"=",self.bb)
a = A("1","2")
print("———————————静态方法——————————————")
a.method1("m1")
A.method1("m1")
print("———————————类方法—————————————")
A.method2()
a.method2()
print("———————————实例方法————————————")
a.method3()