美文网首页
类和对象

类和对象

作者: 丫丫姑娘_b55e | 来源:发表于2018-06-30 15:34 被阅读0次
    • 私有属性:属性名以两个下划线开头
    假的私有属性

    //实际开发中,声明类的属性,很少会使用真正的私有属性和公开属性(前面加两个下滑线的)。

    实际对属性的要求:1.可以通过点语法方便的来给属性赋值或者拿到它的值(不能是私有的)
    假的私有属性满足要求: 就使用假的私有属性 + getter和sette

    1. 声明私有属性,属性名前加一个下划线(这个是规范,不是语法:带一个下划线的属性,不要直接通过一个下划线对应的属性名去访问这个属性)
    2. 通过给属性添加getter和setter来限制赋值和获取值的过程
      a. 添加getter: --> 限制获取属性值的操作
      b. getter的作用:返回属性的值
    • 添加getter

       @property
       def 属性名去掉下划线(self):
       其他任何操作
       return self.带下划线的属性名
      
    • 添加setter

      @属性名去掉下划线.setter
      def 属性名去掉下划线(self, 参数):
      其他任何操作
      self.带下划线的属性名 = 参数
      
    1. 在类的外部通过不带下划线的属性去获取属性的值,或者给属性赋值
      示例一:

       class Person
       def _ _init _ _(self, name=' ' ,age=0) :
         self.name = name
         self.age = age
       #给name属性添加getter
       @property
       def name(self):
         if len(self.name) == 0:
           return '空'
         return self.name
         #给name属性添加setter
       @name.setter
       def name(self, name1) :
         if isinstance(name1, str):
           self.name = name1
       p1 = Person(' 小明')
      

    //getter一般要添加,setter一般不用写
    //如果要添加setter必须添加getter

    类字段和类方法

    1.类字段就是类属性:通过类去获取
    类字段是声明在类里面,函数外面的变量

    class Person:
    """人类"""
    # 这个person_num就是一个类字段
    person_num = 0

    2.类方法:通过类去调用
    开发中怎么确定 声明 方法是对象方法还是类方法:看实现的功能是否需要对象属性来支持,如果需要就必须声明称对象方法

    @classmethod来说明下面的函数是一个类方法 --> 函数修饰符
    # 所有的类方法都有一个默认参数cls,这个参数不需要传参,系统会自动将调用方法的类传给它(谁调用指向谁)

    @classmethod
    def hurt_earth(cls):
        print(cls)
        print('人类伤害破坏环境,伤害地球', Person.person_num, cls.person_num)
    

    //类字段要用类去使用
    print(Person.person_num)
    //通过Person类调用类方法
    Person.hurt_earth()
    print(Person)

    • 静态函数:在类中声明,由类来调用的方法

      class Math:
        """数学类"""
        #multiply就是一个静态方法
        @staticmethod
        def multiply(num1, num2):
        return num1 * num2
      

    静态方法需要使用类来调用
    print(Math.multiply(10, 4))
    示例二:静态方法和类方法的区别
    静态方法和类方法都是通过类去调用

    区别:

    1. 类方法都有一个默认参数cls指向调用方法的类,但是静态方法没有
    2. 类型不一样,静态方法的类型是function,类方法的类型是method

    相关文章

      网友评论

          本文标题:类和对象

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