zoukankan      html  css  js  c++  java
  • 面向对象初识

    在面向对象之前,接触到面向过程式编程和函数式编程,它们很容易造成代码冗余,面向对象式编程能使代码的结构更加清晰化,可读性更高

    面向过程编程 vs 函数式编程 vs 面向对象式编程
    区别:
      面向过程式编程:重复代码过多,可读性比较差
      函数式编程: 函数名要有可识别性
      面向对象的优势:1,类是一组相似功能的集合体,使组织结构更加清晰和规范化
              2,要有上帝的思维,用面向对象设计程序,类是一个公共模板,对象去操作和使用这个模板

    函数式编程:(每个函数之间都没有联系)
    def login():   pass def register():   pass def check_user():   pass def check_account():   pass def save():   pass def check_flow_account():   pass 面向对象式编程: 组织结构更加清晰 class Auth:   def login():     pass   def register():     pass   def check_user():     pass class Account:   def check_account():     pass   def save():     pass   def check_flow_account():     pass

    什么是类?

      类是具有相似功能和属性的一类事物,功能为动,属性为静
    什么是对象?

      对象是类的具体体现,具体到一个
    类的结构:

    class Human(类名首字母大写):
        # 第一部分:静态属性,属性,变量,静态字段
        mind = '有思想'
        language = '使用语言'
        shape_list = ['四肢','五官']
        # 第二部分:动态属性,方法,函数
        def work(self):
            print('都会工作')
        def eat(self):
            print('都需要吃饭')

    如何使用?

     类:

     对属性的操作:
     1.查看类中的所有内容: print(类名.__dict__),通过__dict__只是能查询,不能进行增删改
     2.万能的点 . (类名+ . 的方式)  
      增: 类名.属性名 = '属性值'
      删: del 类名.属性名
      改: 类名.已有属性名 = '新的属性值'
      查: print(类名.属性名)
     3.类中的动态方法,(除静态方法,类方法)一般不用类名去执行类中的方法
      通过对象去使用,类名+(),实例化过程,实例化一个对象
     实例化对象的过程:
        1.在内存中开辟一个新的空间
        2.默认执行__init__方法,并把对象空间传给self
        3.在__init__方法中,给对象空间封装一些属性
     对象: 

     1.对象查看对象空间中的所有属性:print(对象 + __dict__)
     2.对象操作对象空间的属性: 万能的点 .
      增: 对象名 + 属性名 = 属性值(类的外面)
      删: del 对象名.属性名
      改: 对象名.已有属性名 = 属性值

     3.对象查看类中的静态属性:print(对象 + 属性名),只能查看,不能更改
       实例化对象可以使用公共模板的属性,但不能进行修改
     4.对象调用类中的方法: 对象名.类中的方法
       对象执行类中的方法,会把对象空间自动传给方法中的self参数

     给对象封装属性

      1.在__init__中,__init__(self,name,age):
      2.在类的外面: 对象名.属性名
      3.在类的其他方法中:

    class A:
      def __init__(self,name,age):
        self.name = name
        self.age = age
      def func(self,sex):         可以写为固定的,也可以传递一个参数
        self.sex = sex 
    obj = A('小胖',18)
    obj.func('')           obj对象空间传给self

    给类添加属性

      类的外部: 类名.属性名 = 属性值
      类的方法内: 类名.属性名 = 属性值
      通过对象: 对象名.方法名执行方法
    类名调用方法与对象调用方法达到一样的效果:
      类名.方法名(对象)

    对象查找属性的顺序: 对象空间 --> 类空间 --> 父类空间 --> ......
    类名查找属性的顺序: 本类空间 --> 父类空间 --> ......

  • 相关阅读:
    read()系统调用的流程(转个贴)
    linux kernel reading
    开博第一篇
    让人崩溃的Visual C++ 2005 SP1 Redistributable Package (x86),为啥我下不下来?
    System Call on Linux 2.6 for i386(2) int 0x80与systementer
    http://www.netyi.net/in.asp?id=yuanxianping
    取Insert产生的ID
    递归触发器资料
    Commit Trans和Rollback Trans在有触发器操作时的区别
    转:安全配置SQL Server2000服务器
  • 原文地址:https://www.cnblogs.com/py8318/p/10340717.html
Copyright © 2011-2022 走看看