zoukankan      html  css  js  c++  java
  • Python学习-day6

    一、面向对象编程

          面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

         面向对象的最主要目的是提高程序的重复使用性。

    二、类和实例

          面向对象最重要的概念就是类(Class)和实例(Instance),类是具有相同属性和行为的一组对象的集合。在Python中,类通过 class 关键字定义,以 Person 为例,定义一个Person类

    1  class Person(object):
    2      pass

     Python 中习惯将类名首字母大写,紧接着是(object),表示该类是从哪个类继承下来的。事物的属性在类中用变量表示,事物的行为和动作在类中用方法即函数表示。

    1 class Person(object):
    2      def __init__(self,name,gender,birth):
    3          self.name = name
    4          self.gender = gender
    5          self.birth = birth
    6      def tell(self):
    7          print('this is the informtion of %s '%self.name)

          创建Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都加上统一的属性。__init__()方法的第一个参数必须是self,后面的参数可以自己定义。类中函数的第一个参数必须是self,self指向所创建的实例。self.<变量名> 称为实例变量,可在类的任何方法中直接应用。

           对象是实际的实体,每一个对象都是类的一个具体实例。创建类的实例格式:

    <变量> = <类名>([参数],....)创建实例时,必须提供除self以外的参数。

    1 p1 = Person('alex','M',20),
    2 p2 = Person('Rose','F',18)

    除了接收__init__方法中指定的属性,还可以给实例增加其他属性

    1 p1 = Person('alex','M',20)
    2 p1.job = 'teacher'
    3 print('the job of p1 is %s '%p1.job)

    运行结果:

    the job of p1 is teacher 

    对象方法调用:<对象名>.<方法名>.(<实参>)

     

    1 p1 = Person('alex','M',20)
    2 p2 = Person('Rose','F',18)
    3 p1.tell()
    4 p2.tell()
    View Code

    运行结果:

    this is the informtion of alex 
    this is the informtion of Rose 

    三、面向对象特性

          面向对象的三大特性:封装、继承、多态

    1. 封装

          Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问,仅可以内部访问。

    1 p1 = Person('alex','M',20)
    2 p1.tell()
    3 print('修改前:',p1.get_age())
    4 p1.set_age(17)
    5 print('修改后:',p1.get_age())

    运行结果:

    this is the informtion of alex 
    修改前: 20
    修改后: 17

    这样外部要访问私有属性age必须通过get_age和set_age方法,这样就确保了外部代码不能随意修改对象内部的状态。

          

  • 相关阅读:
    死信队列消息原因排查
    MQ中间件死信队列深度不断增加问题解决案例
    DB2 57016报错的解决办法(表状态不正常,导致表无法操作)
    万门大学--童哲
    eclipse jvm配置
    weblogic threadpool has stuck threads
    8-10 ObserveableCommand演示
    8-9 四种执行方式区别讲解
    8-8 toObserve两种形态演示
    8-7 Observe两种形态演示
  • 原文地址:https://www.cnblogs.com/iclq/p/5814396.html
Copyright © 2011-2022 走看看