版权声明:本文为博主原创文章,未经博主允许不得转载。不准各种形式的复制及盗图 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(): 函数如果前面加双下划线,就是该函数私有化,同样,只有类内函数可以调用该函数,外部无法直接调用,对象也无法调用。