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)    此处是方法的覆写

 单继承没什么好说的,多继承还是比较麻烦的。

 

posted on 2015-11-21 20:52  slower  阅读(448)  评论(0编辑  收藏  举报