zoukankan      html  css  js  c++  java
  • python 面向对象编程

    如果采用面向对象的程序设计思想,我们首选思考的不是程序的执行流程,而是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 a
    print type(a)
    print a.print_score()
    
    class Student(object):
        pass
    
    class 后面紧接着是类名,即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 bart
    print bart.name
    print  bart.score
    bart.score = 59
    print bart.score
    
    C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/cookbook/a19.py
    <__main__.Student object at 0x02556350>
    Bart Simpson
    98
    59
    
    如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__.
    
    在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):
        pass
    a=Dog()
    print a
    print type(a)
    print a.run()
    
    C:Python27python.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 a
    print type(a)
    print a.run()
    
    C:Python27python.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自带的数据类型没什么两样:

  • 相关阅读:
    安卓手机root
    adb导出安卓 把手机内存文件导入到电脑里 adb安装软件
    象棋start
    当我new class的时候,提示以下错误: Unable to parse template "Class" Error message: This template did not produce a Java class or an interface Error parsing file template: Unable to find resource 'Package Header.j
    通信协议:HTTP、TCP、UDP
    根据地址获取经纬度
    chrome提示Adobe Flash Player过期解决
    spring mvc:实现给Controller函数传入list<pojo>参数
    [转]Hibernate入门:批量插入数据
    spring mvc:实现给Controller函数传入map参数
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349444.html
Copyright © 2011-2022 走看看