python 面向对象编程

来源:互联网 发布:安装ubuntu时怎么分区 编辑:程序博客网 时间:2024/06/08 01:17
如果采用面向对象的程序设计思想,我们首选思考的不是程序的执行流程,而是Student这种数据类型被视为一个对象。这个对象拥有name和score这两个属性(Property)。class Student(object):    def __init__(self, name, score):        self.name = name        self.score = score    def print_score(self):        print '%s: %s' % (self.name, self.score)a=Student('a','b')print aprint type(a)print a.print_score()class Student(object):    passclass 后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类从哪个类继承下来的,如果没有合适的继承类,就使用object类注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身数据封装:面向对象编程的一个重要特点就是数据封装,访问限制:在class内部,可以有属性和方法,而外部代码可以通过直接调用变量的方法来操作数据,但是,从前面Student的定义来看,外部代码还是可以自由地修改一个实例的name,score属性class Student(object):    def __init__(self, name, score):        self.name = name        self.score = score    def print_score(self):        print '%s: %s' % (self.name, self.score)bart = Student('Bart Simpson', 98)print bartprint bart.nameprint  bart.scorebart.score = 59print bart.scoreC:\Python27\python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/cookbook/a19.py<__main__.Student object at 0x02556350>Bart Simpson9859如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__.在Python中,实例的变量如果以__开头,就变成了一个私有变量,只有内部可以访问,外部不能访问。继承和多态:在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。当我么需要编写Dog和Cat类时,就可以直接从Animal类继承:class Animal(object):    def run(self):        print 'Animal is running...'class Dog(Animal):    passa=Dog()print aprint type(a)print a.run()C:\Python27\python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/cookbook/a19.py<__main__.Dog object at 0x02587E30><class '__main__.Dog'>Animal is running...None对于Dog来说,Animal就是它的父类,对于Animal来说,Dog就是它的子类。Cat和Dog类似。class Animal(object):    def run(self):        print 'Animal is running...'class Dog(Animal):    def run(self):        print 'Dog is running...'a=Dog()print aprint type(a)print a.run()C:\Python27\python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/cookbook/a19.py<__main__.Dog object at 0x02646310><class '__main__.Dog'>Dog is running...None当子类和父类都存在相同的run()方法时,我们说,子类run()覆盖了父类的run()要理解什么是多态,我们首先要对数据类型再作一点说明,当我们定义一个class的时候,我们实际上就定义了一种数据类型。我们定义的数据类型和Python自带的数据类型没什么两样:

原创粉丝点击