zoukankan      html  css  js  c++  java
  • day 18 类,对象

    类,对象:

      类 具有相似功能的一类事物,人类,犬类,猫类等等。

    对象: 类的具体表现

    面向对象:

     1、第一个优点:面向对象是一类相似功能函数的集合体

       更清晰化,更规范化

    class LoginHandler:  # 登录和注册归属于一类  (calss 驼峰体 结构)
        def login(self):
            pass
        def regisgter(self):
            pass
    class ShoppingCar:   # 购物车归为一类,含有购物,已购买信息,未购买信息等功能
        def shopping(username, money):
            pass
        def check_paidgoods(username, money):
            pass
        def check_unpaidgoods(username, money):
            pass
    ShoppingCar

     2、面向对象,必须要站在上帝角度,去考虑问题

      类其实就是一个公共模板,对象就从具体的模块实例化出来

    面向对象的结构:

    '''

    class 类名():             # 首字母大写,驼峰体,括号可写可不写

      变量部分

      函数(方法)

    '''

    class Human():
        '''
        此类主要是定义人类
        '''
        mind = '有思想'   # 静态属性  属性  静态变量  静态字段
        language = '会使用语言'
        def __init__(self,name,sex,age): # 方法, 函数,动态属性
            self.n = name
            self.s = sex
            self.a = age
        def work(self):
            print('人类会工作')
        def tools(self):
            self.color = 'blue'
            print('人类会使用工具')
    print(Human)   # <class '__main__.Human'>
    定义一个类

    类名:

     类名操作类中的静态属性

      第一种: 类名.__dict__ 方式,查看类中所有内容

    print(Human.__dict__)
    print(Human.__dict__['mind'])
    Human.__dict__['mind'] = '无脑'   #  修改无效
    print(Human.__dict__)

      第二种:万能的. 可以增删改查类中的静态属性

    print(Human.mind)  #
    Human.mind = '无脑'  #
    print(Human.mind)
    del Human.mind  #
    Human.walk = '直立行走'
    print(Human.walk)

    类名操作类中的方法(除去特殊方法:静态方法,类方法之外,一般不会通过类名执行类中的方法)

    对象:

     什么是对象

      只要类名() 这个就是一个实例化过程,就会产生一个对象

    obj = Human()

    实例化一个对象到底经历了哪些事情?

    1、产生一个对象空间。

    print(obj)  # <__main__.Human object at 0x0000019BC6A0F828>

    2、自动执行类中的__init__方法(init函数)并且将这个对象空间传给self

    3、在__init__中通过self给这个空间添加属性,并且返回

     对象操作对象空间的属性

    obj = Human('小胖', '男', 20)

      #1、 obj.__dict__ 查询对象中所有的属性

    print(obj.__dict__)

      #2、 通过万能的. 的方式操作对象中的单个属性

    # 增 删 改 查
    obj = Human('echo', 'male', 26)
    obj.job = 'IT'   #
    # print(obj.__dict__)
    # del obj.job    # 删
    # print(obj.__dict__)
    # obj.s = 'woman'   # 改
    # print(obj.__dict__)
    print(obj.s)    #
    View Code

      #3、对象可以查询类中的属性

    print(obj.mind)
    print(obj.language)
    obj.a = 666
    print(obj.a)
    View Code

      4、对象可以执行类中的方法

       对象执行类中的所有方法(除去3个特殊方法)Python解释器都会将对象空间主动传给方法的第一个参数self

    obj.work()

    self:类中方法的第一个形参约定俗成写self,便于统一,self接受的就是对象空间

    多个对象:

    xiaopang = Human('小胖', '', 20)
    xiangye = Human('相爷', '', 18)
    print(xiangye,xiaopang)   # <__main__.Human object at 0x00000223FE0E8B38> <__main__.Human object at 0x00000223FE0E8B00>
    print(xiaopang.__dict__)  #  {'n': '小胖', 's': '男', 'a': 20}
    print(xiangye.__dict__)   # {'n': '相爷', 's': '男', 'a': 18}
  • 相关阅读:
    Hello,cnblogs!
    本地搭建IIS服务器
    thinkPHP相关
    网页中经常用到的<hr / >标签的样式
    JS三元表达式
    ZUI开发人员选项
    XWindow、Server、Client和QT、GTK之间的关系
    深度桌面操作系统架构设计
    关于linux图形界面的基本知识
    linux各发行版之间的区别
  • 原文地址:https://www.cnblogs.com/echo2019/p/10266262.html
Copyright © 2011-2022 走看看