Python3的成员修饰符

版权声明:本文为博主原创文章,未经博主允许不得转载。不准各种形式的复制及盗图 https://blog.csdn.net/qq_26816591/article/details/88924836

定义私有成员:


class stu1():

    def __init__(self, name, age):
        self.name = name
        # self.age = age
        self.__age = age  # 外部无法直接访问 内部可以访问

    def getname(self):
        return self.name

    def getage(self):  # 内部可以访问
        return self.__age


man = stu1('joe', '18')
print(man.name)
# print(man.age) # 外部不能直接访问
print(man.getage())  # 但是可以间接访问

 类的私有字段成员:


class stu2():
    val = 'smith'
    __val2 = 'smith2'  # 前面加双下划线 私有化

    def __init__(self):
        pass

    def show(self):
        print(stu2.__val2)

    @staticmethod
    def stat():  # 静态方法可以没有参数
        return stu2.__val2


man = stu2()
print(man.val)
man.show()  # 可以通过内部函数调用私有字段
# print(man.__val2) # 外部不能直接调用
print(man.stat())  # 可以通过静态方法调用私有字段

 类的私有方法:


class stu3():
    def __f1(self): # 函数名前面加双下划线,是私有函数
        return 18

    def f2(self):
        return self.__f1()


man = stu3()
print(man.f2())  # 但是可以通过类内的方法调用类内的私有函数
# man.__f1() 外部不能直接调用 类的私有函数

要点:

  •  self: 类内方法的第一个参数一定是self,self代指代用该方法的中间人,实例化的对象。
  • self.name=name: 可以在构造函数内写一些字段,利用self.name = name 实现封装,外部无法直接访问,只有内部可以访问。可以利用内部函数间接访问。
  • __ name: 字段如果前面加双下划綫,就是该字段私有化,只有内部函数可以调用,外部不能直接调用。
  • @staticmethod: 如果函数前加 @staticmethod 就是声明该函数是一个静态方法,静态方法可以没有参数。静态方法可以被对象调用。
  • __f(): 函数如果前面加双下划线,就是该函数私有化,同样,只有类内函数可以调用该函数,外部无法直接调用,对象也无法调用。

猜你喜欢

转载自blog.csdn.net/qq_26816591/article/details/88924836