Python3的成员修饰符

更新时间:2019-04-02 11:11:42 点击次数:1439次
定义私有成员:

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(): 函数如果前面加双下划线,就是该函数私有化,同样,只有类内函数可以调用该函数,外部无法直接调用,对象也无法调用。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!