• 《Python》 面向对象初识


    一、面向对象初识:

       1、结构上理解:类由两部分组成

         class  A:      # class是类的关键字,类名首字母默认大写

           name = 'alex'   # 静态属性,静态变量,静态字段

           def  func1(self):  # 函数,动态属性,方法

              pass

       2、函数 vs 面向对象:

          1、函数封装一个功能,而面向对象封装多个相关的功能。

          2、面向对象抽象,它是一种思想,站在上帝的角度去理解它。

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

    def register(argv):
        pass
    
    def login(argv):
        pass
    def shoppingcar(argv):
        pass
    
    
    
    class Shopping_Car:
        def __init__(self):  # 特殊方法
            pass
    
        def register(self):
            pass
    
        def login(self):
            pass
        def shoppingcar(self):
            pass
    函数 vs 面向对象

       3、类,对象

          类:具有相同属性或者功能的一类实物。

          对象:对象是类的具体表现。

    二、类名,对象的使用:

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

       类名:

        1、查看类中的所有属性及方法 __dict__(查看单个属性和方法也可以用__dict__[ ],但不建议用)

        2、查看,(增删改)类中的某个,某些属性用(万能的点).

        3、操作方法,一般不通过类名操作!!!

    class Person:
        animal = '高级动物'
        walk_way = '直立行走'
        language = '语言'
    
        def eat(self):
            print('吃饭')
        def word(self):
            print('人类需要工作')
    
    print(Person.__dict__)        # 查    所有的属性和方法
    print(Person.animal)          #
    Person.animal = '低级动物'    #
    Person.name = 'alex'         #
    del Person.animal            #
    print(Person.name)
    print(Person.animal)
    Person.eat(12)             # 执行一个方法
    print(Person.word(123))     # 执行方法并返回 None
    Person.age = 18
    print(Person.age)
    类的属性和方法的增删改查

       对象:

        实例化过程内部进行了三个阶段:

          1、在内存中开辟了一个对象空间

          2、自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入

          3、执行__init__方法,给对象空间封装相应的属性。

    class Person:
    
        animal = '高级动物'
        walk_way = '直立行走'
        language = '语言'
    
        def __init__(self,name,age,eye):  # 功能:给对象封装属性的。
            self.name1 = name
            self.age1 = age
            self.eye1 = eye
    
        def eat(self):
            print('该吃吃,该喝喝,啥事别忘心里搁')
    
        def work(self):
            print('人类都需要工作。。。')
    
    obj = Person('alex',1000,'小眼睛')  # 这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)。
    print(obj)  # 对象空间的内存地址
    print(obj.name1)
    实例化对象空间

        对象操作对象空间:

          1、查看对象空间所有的属性 __dict__

            print(对象名.__dict__)

          2、对象操作对象的某个属性(增删改查)用(万能的点)       

    obj.sex = ''      #
    del obj.eye1        #
    obj.eye1 = '大一点'  #
    print(obj.name1)    # 查 单个
    print(obj.__dict_)  # 查 全部对象(返回一个字典)
    
    # alex
    # {'name1': 'alex', 'age1': 1000, 'eye1': '小眼睛'}

          3、对象操作类空间的属性:只能查

    print(obj.animal)          # 现在对象空间找,没有的话到类空间里找
    obj.animal = '低级动物'     # 不能改变类空间的属性,所以是新增一个对象属性
    print(obj.animal)          # 打印的是对象空间里新增的属性
    print(obj.__dict__)
    print(Person.__dict__)

          4、对象操作类空间的方法

    print(obj)  # 打印对象空间内存地址
    obj.eat()   # 对象操作类空间的方法

    三、类名称空间,对象名称空间:

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

          先从自己空间找,没有此属性他会通过类对象指针去类空间找,类中找不到到父类中找

          对象只能查看类中的属性,不能增删改类中的属性。

       2、类能不能调用对象的属性?  不能

       3、对象与对象之间可不可以互相调用?

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

          不同类实例化 对象有可能互相访问

        给对象封装属性:对象名.__init__  (任意位置)

  • 相关阅读:
    Windows安装和使用zookeeper
    Maven安装以及环境配置(Windows)
    greenplum下载地址
    Install Greenplum OSS on Ubuntu
    MySQL主从复制与主主复制
    HADOOP+SPARK+ZOOKEEPER+HBASE+HIVE集群搭建(转)
    kafka实战
    rtl8723 2个 wlan
    wpa supplicant 移植
    wireless tool 移植
  • 原文地址:https://www.cnblogs.com/yzh2857/p/9526627.html
Copyright © 2020-2023  润新知