属性分为实例属性与类属性this
方法分为普通方法,类方法,静态方法spa
一:属性:对象
尽可能把须要用户传入的属性做为实例属性,而把同类都同样的属性做为类属性。实例属性在每创造一个实例时都会初始化一遍,不一样的实例的实例属性可能不一样,不一样实例的类属性都相同。从而减小内存。内存
1:实例属性:ci
最好在__init__(self,...)中初始化string
内部调用时都须要加上self.it
外部调用时用instancename.propertynameclass
2:类属性:test
在__init__()外初始化方法
在内部用classname.类属性名调用
外部既能够用classname.类属性名又能够用instancename.类属性名来调用
3:私有属性:
1):单下划线_开头:只是告诉别人这是私有属性,外部依然能够访问更改
2):双下划线__开头:外部不可经过instancename.propertyname来访问或者更改
实际将其转化为了_classname__propertyname
二:方法
1:普通类方法:
def fun_name(self,...):
pass
外部用实例调用
2:静态方法:@staticmethod
不能访问实例属性!!! 参数不能传入self!!!
与类相关可是不依赖类与实例的方法!!
3:类方法:@classmethod
不能访问实例属性!!! 参数必须传入cls!!!
必须传入cls参数(即表明了此类对象-----区别------self表明实例对象),而且用此来调用类属性:cls.类属性名
*静态方法与类方法均可以经过类或者实例来调用。其两个的特色都是不可以调用实例属性
e.g1:
总结:类属性与类方法是类固有的方法与属性,不会由于实例不一样而改变,写他们的目的是减小多实例时所创造出来的内存空间,加快运行速度。