• python_面向对象基础


    一、面向对象初始

      1、结构上理解面向对象:两部分

    class Person:
        animal = '高级动物'    #静态属性
        walk = '直立行走'
    
        def work(self):         #方法,动态属性
            print('工作。。。。。')
    View Code

       函数vs对象

      1、函数封装一个功能,对象封装多个功能

      2、面向对象抽象,它是一种思想

      3、可扩展,对象一个个都是独立的,耦合性,差异性

      类:具有相同属性和功能的一类实物

      对象:类的具体体现

      

      2、类名,对象的使用

      一个公共框架,一个公共模型

    class Person:
        walk_way = '直立行走'
        language = '语言'
    
        def eat(self):
            print('吃饭。。。')
    
        def work(self):
            print('工作。。。')
    
    1、查看类中所有的属性方法
    Person.__dict__
    Person.__dict__['animal'] 通过__dict__方式可以对属性进行查看,但不能对其增改
    
    2、查(增删改)类中某个或某些属性可以用万能的点
    print(Person.walk_way)  #'直立行走'
    Person.name = 'alex'   #
    del Person.eat  #
    Person.walk_way = ''   #
    
    3、操作方法一般不建议通过类名操作
    Person.__dict__['eat'](111)
    Person.eat(6666)
    View Code

      

      3、对象 

    class Person:
        animal = '高级动物'
        walk_waf = '直立行走'
    
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
    
        def eat(self):
            print('吃饭。。。。')
    
    obj= Person('xx',18,'male')
    这个过程就是实例化,会产生一个实例化对象(在内存实例化一个对象空间)
    
    实例化过程内部进行了三个阶段
    1、在内存开辟一个对象空间,里面存放了类对象指针
    2、自动执行类中__init__方法,将对象空间传给参数self,其它参数手动传入
    3、执行__init__方法,给对象空间封装相应的属性
    
    对象查看对象空间中的所有属性__dict__
    对象操作对象空间(增删改查)用万能的点
    obj.name  #
    obj.name = 'alex'  #
    obj.hobby = 'music'  #
    del obj.sex = 删
    
    对象操作类空间的属性,只能查
    对象操作类空间的方法obj.work()
    View Code

      4、类名称空间,对象名称空间

      1、定义一个类,程序从上往下执行,会在内存中开辟一个空间,存放类中的属性和方法

      2、实例化这个类时,会在内存中开辟一个新的对象空间,里面有个类的对象指针

      3、为什么对象能调用类中的属性与方法,而且只是调用?不能改变?

        1、对象先从对象空间中去找,找不到然后通过类对象指针从类中查找,找不到然后从父类中查找。

        2、对象只能查看类中的属性,不能进行增删改

      4、类不能调用对象中的属性

      5、同一个类实例化出来的对象之间是不能互相访问的 

      6、不同类实例化出来的对象可能可以互相访问

      7、给对象封装属性,__init__  任意位置

      

  • 相关阅读:
    巨人的崛起 Android操作系统发展历程
    iPhone 4S定位功能加强 支持GLONASS系统
    android子线程更新UI,与主Thread一起工作
    什么在阻碍移动互联网的普及?
    WEB.CONFIG 配置详解
    解决在aspx页面上进行传中文参数时会出现乱码问题
    VS2005水晶报表注册码
    windows2003应用程序池假死的问题
    浅谈ASP.NET内部机制
    合理建立数据库索引
  • 原文地址:https://www.cnblogs.com/echo-up/p/9526138.html
Copyright © 2020-2023  润新知