面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用
类是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中)
对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数
面向对象的三大特性:封装、继承、多态
类的成员:字段、方法和属性
其中字段: 普通字段、静态字段
方法:普通方法、类方法、静态方法
属性:普通属性
注: 所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少个对象,在内存中就有多少个普通字段。而其他的成员,则都保存在类中,即:无论对象的多少,在内存中只创建一份。
一、字段
class Student: #静态字段 name='lucy' def __init__(self,name): #普通字段 self.name = name #直接访问普通字段 obj = Student('lily') print obj.name #直接访问静态字段 print Student.name
普通字段通过对象来访问,静态字段通过类访问
静态字段在内存中只保存一份
普通字段在每个对象中都要保存一份
应用场景: 通过类创建对象时,如果每个对象都具有相同的字段,那么就使用静态字段
二:方法
普通方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self;
类方法:由类调用;至少一个cls参数;执行类方法时,自动将调用该方法的类复制给cls;
静态方法:由类调用;无默认参数;
class Student: def __init__(self,name): self.name = name def getName(self): print self.name print '普通方法' @classmethod def class_func(cls): '''定义类方法,至少有一个cls参数''' print '类方法' @staticmethod def static_func(): '''定义静态方法,无默认参数 ''' print '静态方法' #调用普通方法 stu = Student('lily') stu.getName() #调用类方法 Student.class_func() #调用静态方法 Student.static_func()
对于所有的方法,均属于类,所以,在内存中也只保存一份。
方法调用者不同、调用方法时自动传入的参数不同。