zoukankan      html  css  js  c++  java
  • Python学习笔记【第九篇】:Python面向对象基础

    Python语言中一切皆对象(类、属性、方法.........)

    概念

      面向对象编程:Object Oriented Programming 简称OOP 面向对象程序设计

      面向对象和面向过程都是解决问题的一种思路而已

      面向对象(object-oriented ;简称: OO) 至今还没有统一的概念 我这里把它定义为: 按人们 认识客观世界的系统思维方式,采用基于对象(实体) 的概念建立模型,模拟客观世界分析、设 计、实现软件的办法。

      面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开         发效率的作用。

    面向对象的主要概念:类和对象

      类:是一类事物的总称,具有相同的东西,比如:水果,动物,人类。-----看得见摸不着

      对象:是一类的具体实例,比如 小明就是人类的具体某个实例。 ------------看得见摸得着

      总结:类就是对象的模板,各个实例拥有的数据都互相独立,互不影响。

    类的构成:

       类名称,类属性,类方法

      ·  类名 的命名规则按照"大驼峰"

    举例说明:

      1)人类设计,只关心3样东西:

      •   事物名称(类名):人(Person)
      •   属性:身高(height)、年龄(age)
      •   方法(行为/功能):跑(run)、打架(fight)

      2)狗类的设计

      •   类名:狗(Dog)
      •   属性:品种 、毛色、性别、名字、 腿儿的数量
      •   方法(行为/功能):叫 、跑、咬人、吃、摇尾巴

      

     类的抽象

      拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

      在现实世界中:先有对象,再有类

        世界上肯定是先出现各种各样的实际存在的物体,然后随着人类文明的发展,人类站在不同的角度总结出了不同的种类,如人类、动物类、植物类等概念

        也就说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在

      在程序中:务必保证先定义类,后产生对象

        这与函数的使用是类似的,先定义函数,后调用函数,类也是一样的,在程序中需要先定义类,后调用类

        不一样的是,调用函数会执行函数体代码返回的是函数体执行的结果,而调用类会产生对象,返回的是对象

    定义类

      

    # 定义学校类,并且继承了Object(新式类)
    class School(object):
    
        # 初始化对象所实例的属性,完成默认值设定
        def __init__(self, name, addr, type):
            self.name = name
            self.addr = addr
            self.type = type
    
        # 方法
        def kao_shi(self):
            print('%s 学习正在考试' % self.name)
    
        # 方法
        def zhao_sheng(self):
            print('%s 学校正在招生、、、、' % self.name)
    
    # 实例化对象
    s = School('成都七中', '武侯区林荫街校区', '高中')
    # 调用方法
    s.kao_shi()
    s.zhao_sheng()
    # 实例属性增删改
    s.renshu = 50000


    def jiao_Shu(self):
    print('%s 学校教书。。。。' % self.name)


    # 类属性增,删 改
    School.age = 50
    School.jiao_shu = jiao_Shu

    s.jiao_shu()

    # 实例dict列表中只有数据属性,没有函数属性
    print(s.__dict__)
    # 类的dict列表中的实例属性和函数属性
    print(School.__dict__)

    __init__()方法总结

    • __init__()方法,在创建一个对象时默认被调用,不需要手动调用
    • __init__(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为第一个形参外还需要2个形参,例如__init__(self,x,y)
    • __init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去

     

    Self总结

    • 所谓的self,可以理解为自己
    • 可以把self当做C++中类里面的this指针一样理解,就是对象自身的意思,C# 中的this
    • 某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可
    __dict__总结
      # 实例dict列表中只有数据属性,没有函数属性
      print(s.__dict__)
      # 类的dict列表中的实例属性和函数属性
      print(School.__dict__)
    注意:以后要学习反射都是操作类或对象实例的属性、方法其实底层最终操作的就是这个类或对象实例的__dict__属性集合

    什么是新式类,如何判断是不是新式类

       python3中的类都是新式类,python2中的类都是金典类,如何判断是不是新式类就看父类或当前这个类是否有继承Object类。

  • 相关阅读:
    Linux下PHP安装配置MongoDB数据库连接扩展
    Linux下安装配置MongoDB数据库
    解决VMWARE 虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态
    nginx配置多域名
    nginx File not found 错误
    RunLoop与NSTimer的经典面试题
    子线程上的RunLoop运行循环
    主线程上的RunLoop运行循环
    RunLoop运行循环/消息循环
    自动释放池和运行/消息循环
  • 原文地址:https://www.cnblogs.com/wendj/p/9339945.html
Copyright © 2011-2022 走看看