zoukankan      html  css  js  c++  java
  • python类与对象的初识

    什么是对象?之前我们求一个字符串的长度,通过for循环或者while循环求解,随着课程的深入,我们可以通过调用函数来实现,用具体代码来实现如下:

    1 # 使用for循环
    2 s1 = 'cfhgjrfekdcmfvjrgte'
    3 count = 0
    4 for i in s1:
    5     count += 1
    6 print(count)
    1 # 使用函数实现:
    2 def mylen(argv):
    3     count = 0
    4     for i in argv:
    5         count += 1
    6     return count
    7 s1 = 'cfhgjrfekdcmfvjrgte'
    8 
    9 print(mylen(s1))

    接下来我们看一个例子

    1 class A:
    2     name = 'colin'
    3     def func1(self):
    4         pass

    这种含有class定义的我们称为类。从结构上理解,上面可分为两部分:

    1 如:name = 'colin' 这部分称为:静态属性,静态变量,也可以称为静态方法

    2 如:def 定义的函数,我们称为动态属性,也可以称为方法。

    那函数与面向对象有什么不同呢?先举下面两个例子:

    购物车系统,为了实现注册,登陆与购物不同功能时,使用函数:

    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

    通过上面的对比可以看出:

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

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

    3.面向对象的程序可扩展,对象都是一个个独立的。它具有耦合性和差异性

    我们定义了一个类,如何去查看类中的所有属性以及方法?

    1 这里就提供一个方法__dict__

    class Person:
    
        animal = '高级动物'
        walk_style = '直立行走'
        language = '语言'
    
        def eat(self):
            print('该吃吃,该喝喝,啥事别忘心里搁')
    
        def work(self):
            print('人类都需要工作。。。')
    print(Person.__dict__)
    print(Person.__dict__['name'])  # 报错  通过__dict__方式 单独的属性及方法可以查,但是不能增删改
    Person.__dict__['animal'] = '低级动物'   # 报错  TypeError: 'mappingproxy' object does not support item assignment
    Person.__dict__['name'] = 'alex'   # 报错,不能增加

    所以,从上面的例子可以看出,一般用__dict__查看类中的所有属性及方法,不能进行其他操作。

    2 第二种查看方法,使用'.',该点的使用,在某些情况下可以实现类的增删改。

    print(Person.animal)   # 查   高级动物
    Person.name = 'colin'  # 增  colin
    print(Person.name)
    Person.animal = '低级动物' # 改 低级动物
    print(Person.animal)
    del Person.walk_style       #
    print(Person.__dict__)

    3 操作方法:一般不通过类名操作,因此,需引入对象。

    对象

    什么是对象?先引入下面的例子:

    class Person:
    
        animal = '高级动物'
        walk_way = '直立行走'
        language = '语言'
    
        def __init__(self,name,age,eye):  # 功能:给对象封装属性的。
            self.name = name
            self.age = age
            self.eye = eye
    
        def eat(self):
            # print(self)
            print('该吃吃,该喝喝,啥事别忘心里搁')
    
        def work(self):
            print('人类都需要工作。。。')
    obj = Person('colin',27,'小眼睛')  # 这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)。
    print(obj)
    print(obj.name)
    实例化过程内部进行了三个阶段:
    1,在内存中开辟了一个对象空间
    2,自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入。
    3, 执行__init__方法 给对象空间封装相应的属性。

    对象操作是指对对象空间操作,同与类操作相同,由增删改查操作。

    对象查看对象空间所有的属性使用:__dict__
    print(obj.__dict__)
    对象操作对象空间的某个属性,通过'.'来实现增改查功能。
    obj.sex = ''  #
    del obj.eye1  #
    obj.eye = '大一点'  #
    print(obj.name1)
    print(obj.__dict__)
    对象操作类空间的属性 只能查
    print(obj.animal)
    obj.animal = '低级动物'
    print(obj.animal)
    print(obj.__dict__)
    print(Person.__dict__)
    对象操作类空间的方法
    obj.eat()
    
    
  • 相关阅读:
    vue-router嵌套路由,二级路由。
    HTTP与TCP的区别和联系
    使用fiddler模拟弱网环境
    冒泡排序-Python
    快速排序算法-Python
    python+selenium实现163邮箱登陆—iframe动态ID定位 及常用定位方法
    Linux常用命令
    Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务问题解决
    Linux环境Oracle数据库访问出现ORA-01034错误:oracle not available解决
    $props, $attrs,$listeners的具体使用例子
  • 原文地址:https://www.cnblogs.com/colin1314/p/9526382.html
Copyright © 2011-2022 走看看