zoukankan      html  css  js  c++  java
  • 私有属性,私有方法,类变量,实例变量,单下划线,双下划线

    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
  • 相关阅读:
    python 面向对象类成员(字段 方法 属性)
    python 面向对象三大特性(封装 多态 继承)
    python 正则
    python 反射机制 ( 广泛应用于URL参数)
    python 导入模块
    python 字符串格式化 ( 百分号 & format )
    python time
    python filter
    【工作感悟】——揭开“PM”的面纱
    【SSH】——spring的控制反转和依赖注入
  • 原文地址:https://www.cnblogs.com/lvhonglei-python/p/7586894.html
Copyright © 2011-2022 走看看