• 私有属性,私有方法,类变量,实例变量,单下划线,双下划线


    1、私有属性__age,不能通过实例对象直接调用,而是通过一个方法来调用
        class Dog:
          def __init__(self, new_age):
            self.__age = new_age

          def get_age(self):
            return self.__age

        wang_cai = Dog(1)

        result = wang_cai.get_age()
        print(result)

    2、私有方法,通过一个共有方法来调用

      class Dog(object):
         def __init__(self,new_age):
           self.__age = new_age

        #在对象被删除的时候调用
         def __del__(self):
              print('over')

          #定义一个私有方法
          def __sit_down(self):
            print('zuoxiale')
          #dingyi 一个共有方法,再调用私有方法
          def sit_down(self,host):
            if host == 'suqin':
             self.__sit_down()

     wangcai.sit_down('suqin')
    私有方法,私有属性不被子类继承

    3、
      class Person:
        name="aaa"
      p1=Person()
      p2=Person()
      p1.name="bbb"
      print p1.name      # bbb
      print p2.name     # aaa
      print Person.name   # aaa

      类变量就是供类使用的变量,实例变量就是供实例使用的.

      这里p1.name="bbb"是实例调用了类变量,这其实和上面第一个问题一样,就是函数传参的问题,p1.name一开始是指向的类变量name="aaa",

      但是在实例的作用域里把类变量的引用改变了,就变成了一个实例变量,self.name不再引用Person的类变量name了

      class Person:
        name=[]
      p1=Person()
      p2=Person()
      p1.name.append(1)
      print p1.name      # [1]
      print p2.name      # [1]
      print Person.name    # [1

    7、python中的 单下划线 双下划线问题,私有化

      _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入。类对象和子类可以访问,

                _名的变量、函数、类在使用from xxx import *时都不会被导入

      __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)

      __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__ , __ 不要自己发明这样的名字

      父类中属性名为__名字的,子类不继承,子类不能访问

            其实能访问的 ,只是名字此变量重整而已,变成了_class__name

      如果在子类中向__名字赋值,那么会在子类中定义的一个与父类相同名字的属性

      

    life is short,i need python
  • 相关阅读:
    服务器上的vhost
    php解压缩文件方法汇总
    STM32新起航-TMP1
    实现
    如何协调项目与领导?
    《致加西亚的一封信》读后感
    致加西亚的信
    本周设计部分及作业
    对·作业提交项目作业模块需求的编写(赵刚,段超凡)
    (第三周)团队模式中对交响乐团模式的理解
  • 原文地址:https://www.cnblogs.com/lvhonglei-python/p/7586894.html
Copyright © 2020-2023  润新知