Skip to content

Latest commit

 

History

History
163 lines (115 loc) · 4.64 KB

File metadata and controls

163 lines (115 loc) · 4.64 KB

类和对象

类即类别/种类,是面向对象分析和设计的基石,如果多个对象有相似的数据与功能,那么该多个对象就属于同一种类。有了类的好处是:我们可以把同一类对象相同的数据与功能存放到类里,而无需每个对象都重复存一份,这样每个对象里只需存自己独有的数据即可,极大地节省了空间。所以,如果说对象是用来存放数据与功能的容器,那么类则是用来存放多个对象相同的数据与功能的容器。

需要强调的是:在程序中,必须要事先定义类,然后再调用类产生对象(调用类拿到的返回值就是对象)。产生对象的类与对象之间存在关联,这种关联指的是:对象可以访问到类中共有的数据与功能,所以类中的内容仍然是属于对象的,类只不过是一种节省空间、减少代码冗余的机制,面向对象编程最终的核心仍然是去使用对象。

一、类定义

  • 定义

    类名: 首字母大写 遵循标识符的命名规则

    属性:也就是变量 遵循标识符的命名规则

    方法:也就是功能、也就是函数 遵循标识符的命名规则

    • 创建存在属性与方法的类

      class Person:
          # 属性
          name = 'jack'
          age = 18
          sex = 'male'
      
          # 方法
          def dbj(self):
              print('造福人类')
      
          def hobby(self):
              print('抽烟、喝酒、烫头')

二、使用类实例化对象

  • 格式

    对象名 = 类名([参数])

  • 说明

    参数列表 :为了以后给属性赋值(参数传递)

  • 实例化代码

    # 实例化出jack对象
    jack = Person()
    # 调用属性
    print(jack.name)
    print(jack.age)
    # 调用方法
    print(jack.hobby())

三、属性和方法的使用

对象.属性名
对象.方法名([参数...])

方法的返回值 return

方法里如果没有返回值,打印方法的时候返回 None

如果有返回值,需要使用 print() 将其输出,因为return会将返回值返回给调用处

class 类名def 方法名():
        return "值"

注意:

return 下方的代码不在执行 遇到return 就认为是结束了!

四、self对象

  • 概述

    • 在类的内部,使用def关键字来定义方法(函数)。与一般函数不同,方法必须存在第一个参数,也就是self,且为第一个参数。self代表的是当前类的实例,而非类。
    • self参数名 可以随便写,但是建议使用self
  • 实例

    class Test:
        name = 'lucky'
        age = 18
    
        def say(self):
            print('测试self参数')
    
        # self 就是外部当前调用的对象(谁调用 self就是谁)
        # 调用内部的所有属性和方法
        # self叫什么都行  但是统一叫self
        def speak(self):
            # 验证参数self 和 外部对象t1的关系
            print(self)
            print('self_id', id(self))
            # 调用属性
            print(self.name)
            print(self.age)
            # 使用self对象 创建对象属性
            self.sex = 'man'
            self.say()  # 调用方法
            print(self.__dict__)
            print('speak方法')
    
    # 对象
    t1 = Test()
    t1.speak()
    print('t1', t1)
    print('t1_id', id(t1))
    # 调用self创建的对象属性 sex
    print(t1.sex)
    # 查看t1对象内部的所有属性和方法
    print(t1.__dict__)

    注意

    • self就是当前类实例化的对象,哪个对象调用它,他就是哪个对象
    • self不是必须的名称,但是作为标准,必须叫self
    • self在类的内部使用,用于调用和创建对象属性

    五、对象方法的使用

    class Test:
        name = 'lucky'
        age = 18
    
        # def test_args(self, sex, hobby):
        # def test_args(self, sex, hobby, *args):
        # def test_args(self, sex, hobby, **kwargs):
        def test_args(self, sex, hobby, *args, **kwargs):
            # 在调用test_args的时候 创建了对象属性  sex、hobby
            self.sex = sex
            self.hobby = hobby
            print(args)
            print(kwargs)
            return sex, hobby
    
    
    
    t1 = Test()
    # 调用
    t1.test_args('man', '写代码')
    t1.test_args(sex='man', hobby='写代码')
    t1.test_args('man', '写代码', '非常喜欢写代码', '一天不写代码浑身难受')
    print(t1.test_args('man', '写代码', sign1='非常喜欢写代码', sign2='一天不写代码浑身难受'))
    print(t1.__dict__)

    对象中的方法和函数使用一样(参数、返回值) 但是就多了一个self参数