python 类和继承
python 也是面向对象的高级语言,但是平时没有大的项目,也不需要对象属性,方法封装和继承等,所以习惯写函数,但是当稍微做大一点的项目,类比函数编程还是有很大的优势。。。
类由属性和方法组成
class Human(object): __Class_name = "Human" #私有属性,只能在类内部访问 name = "" #类属性,此处可以不写,那样类就没有这个属性 age = 0 def __init__(self,name,age): self.name = name #实例属性 self.age = age def __print(self): #私有方法 print self.name,self.age def tell(self): print self.__Class_name self.__print() #只能在类内部调用私有方法
属性按所属可以分为类属性,实例属性。按是否可以在类外部访问可以分为可访问变量(非私有变量),不可访问变量(私有变量,通过下划线加属性名称组成其实也不是完全不可访问,具体可以查看我转载的一篇python中下划线用法)。
类属性的访问可以直接通过类名称访问,如:Human.name,也可以直接改变类属性,Human.age=10. 类属性最好不要初始化实例属性的,没用还浪费几行代码,也就是说上面的类里的name,age最好不要写。类属性一般写的是类的版本,或者其他一些共有的属性。
实例属性,就是初始化__init__后面的属性,这些属性是在实例化对象时必须写的属性。
方法可以分为类方法,静态方法,私有方法,普通方法。此处不展开,可以查看我的另外一篇文章:python类中类方法,静态方法,私有方法。
类的好处之一就是封装,这样我们就可以在其他包中调用自己写好的类。
然后是类的继承,了解java的一定知道继承,java中是单继承,python是多继承。
首先看python中继承一个父类。
class Student(Human): def __init__(self,name,age,grade): #Human.__init__(self,name,age) 继承初始化可以用父类名称.__init__或者super两种方法,当继承一个父类时,两种写法没有区别 ,注意,super是在新式类才有的,不能在旧式类中用。 super(Student,self).__init__(name,age) self.grade = grade def tell(self): print "My name is %s ,my age is %d,and my grade is %d"%(self.name,self.age,self.grade) 此处是方法的覆写
单继承没什么好说的,多继承还是比较麻烦的。