python类的私有属性

  1. 限制属性
    只能初始化这些规定的属性,不能添加别的属性

    class Exployee:
        __slots__=['id','age','name']
        def __init__(self,id,age):
            self.id=id
            self.age=age
        def __str__(self):
            retrun self.id
    ex=Exployee('001',20)
    ex.name='tom'
    print(ex)
  2. 私有属性
    变量名以双下划线开头,只能在类内部访问,可以采用共有方法访问私有属性

    class Exployee:
        nation='china'
        def __init__(self,id,age):
            self.__id=id
            self.__age=age
        def getId(self):
            return self.__id#只读
        def setId(self,id):
            self.__id=id#只写
    ex01=Exployee('001',20)
    print(ex01.getId())#得到id
    ex01.setId('008')#改变id
    print(ex01.getId())
  3. @property

    class Exployee:
        def __init__(self,id,age)
            self.__id=id
            self.__age=age
        @property
        def age(self):
            return self.__age
        @age.setter
        def age(self,myage):
            self.__age=myage
    
        ex01=Exployee('001',20)
        print(ex01.age)
        ex01.age=22
        print(ex01.age)
  4. 类方法

    class Exployee:
        nation='china'
        __acount=0
        def __init__(self,id):
            self.__id=id
            Exployee.__acount+=1
        def __del__(self):#删除
            Exployee.__acount-=1
        @classmethod
        def show(cls):
            return cls.nation
        @classmethod
        def acount(cls):
            return cls.__acount
        @staticmethod
        def display():
            print('i am Exployee')
    ex1=Exployee('001')
    ex2=Exployee('001')
    ex3=Exployee('001')
    del ex1#删除ex1
    print(Exployee.acount)#输出2

猜你喜欢

转载自blog.csdn.net/qq_42650983/article/details/81318568
今日推荐