美文网首页
day14 类和对象

day14 类和对象

作者: 上邪5415 | 来源:发表于2018-09-06 18:44 被阅读0次

      几天主要学习了python中的类与对象的基础知识。

      一、类的声明

      类:对拥有相同功能(方法)和相同属性的封装。
      封装效果:一个类中可以对多个功能进行封装(多个函数),封装多个属性。
    类的声明格式:
          class 类名:
            类的说明文档
            类的内容

    示例:
    class Person:
        ''' 人类'''
        def eat(self):
            print("人在吃饭")
    

      二、构造方法和init方法

      构造方法:系统自动创建,方法名和类名一样。用来创建对象。
      init:init方法的功能是用来做初始化的和添加对象属性的。
    注意:当我们通过构造方法去创建对象的时候,系统会自动调用Init方法。

    示例:
        class Dog:
            def __init__(self):
                print('init方法')
    

      创建对象的过程:调用构造方法在内存中开辟空间创建一个对象,然后用新建的这个对象去调用init方法,来初始化对象的属性。最后才将对象返回。

      三、对象的属性

      对象的属性:不同的对象,对应的值可能不一样,这样的属性是对象属性。属于对象
    类中的对象属性是声明在init方法中的,并且声明格式是:self.属性名 = 初值
      对象属性的使用:对象.属性名

      四、对象属性的增删改查

    • 查(获取属性的值)

      方法一:对象.属性名
      方法二:def getattr(对象, 属性名(字符串), 默认值)
      方法三:对象._ getattribute _(属性名)

    示例:
    class Person:
        '''人类'''
        def __init__(self):
            self.name = '张三'
            self.age = 18
            self.height = 160
    p1 = Person()
    
    查获的三种方法:
        a. p1.name
        b. getattr(p1,'name')
        c. p1.__getattribute__('name')
    
    • 改和增

      当属性值存在时,将对对象的属性值进行修改,当属性值不存在时,将对对象的属性值进行添加。
      方法一:对象.属性 = 新值
      方法二:def setattr(对象, 属性名, 新值)
      方法三:对象.__ setattr __(属性名,新值)

    修改的三种形式:
        a.p1.name = '李四'
        b.setattr(p1,'age',20)
        c.p1.__setattr__('height',170)
    增加的三种形式:
        a.p1.sex = '女'
        b.setattr(p1,'weight',45)
        c.p1.__setattr__('color','绿色')
    

    *删(删除对象属性)

    注意:删除只针对指定的对象
    方法一:del 对象.属性
    方法二:delattr(对象,属性名)
    方法三:对象.__ delattr __(属性名)

    del p1.name
    delattr(p1,'age')
    p1.__delattr__('height')
    

      五、类的字段

      类的字段就是声明在类的里面,方法的外面的变量,就是类的字段。
      属于类的,对于这个类的所有的对象来说,其值是共有的。
      字段的使用格式:类.字段

    示例:
        class Person
            number = 10
        print(Person.number)
    

      六、类的方法

    类中的方法:
      1.对象方法(实例方法)
    声明的形式:直接声明在类中
    特点:自带一个不需要主动传参的默认参数self,谁来调用指向谁
    调用:通过对象来调用
      2.类方法
    声明的形式:声明方法前需要使用@classmethod说明
    特点:自带一个默认参数cls,这个参数调用的时候,不需要传值。系统会自动给他传。谁调用就指向谁!始终指向当前类
    调用:通过类来调用———>类.类方法()
      3.静态方法
    声明的形式:声明方法前需要使用@staticmethod说明
    特点:没有默认的参数
    调用:通过类来调用——>类.静态方法()

    class Class1:
       # 类字段
       number = 100
       # 声明一个对象方法
       def object_func(self):  #对象方法
           print('对象方法')
       @classmethod
       def class_func(cls):
           # 通过cls去使用类的字段
           print('cls',cls.number)
           # 通过cls去创建对象
           tc = cls()
           tc.object_func() #通过对象调用对象方法
           print('这是一个类方法')
       @staticmethod
       def static_func():
           print('这是一个静态方法')
    
    c1 = Class1()
    c1.object_func()
    print(Class1.number)
    print(Class1.class_func())
    Class1.static_func()
    

    相关文章

      网友评论

          本文标题:day14 类和对象

          本文链接:https://www.haomeiwen.com/subject/zkoxgftx.html