版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
1、私有实例方法
通过非私有实例方法可以间接访问私有实例方法:
# 私有实例方法
class Foo:
def __init__(self, name):
self.name = name
def __f(self):
print(self.name)
def getF(self):
self.__f()
f = Foo('Thanlon')
# f.__f() # 调用失败
f.getF()
'''
Thanlon
'''
2、私有静态方法
通过非私有实例方法可以间接访问私有静态实例方法:
# 私有静态方法
class Foo:
def __init__(self, name):
self.name = name
@staticmethod
def __f():
print('私有静态方法!')
def get_f(self):
self.__f()
# Foo.__f()
# 类.静态方法调用失败
# Foo.__f()
# 通过非私有静态方法
obj = Foo('Thanlon')
obj.get_f()
'''
私有静态方法!
'''
通过非私有静态方法也可以间接访问私有静态实例方法:
# 私有静态方法
class Foo:
def __init__(self, name):
self.name = name
@staticmethod
def __f():
print('通过非私有静态方法调用私有静态实例方法!')
@staticmethod
def get_f():
Foo.__f()
# 类.静态方法调用失败
# Foo.__f()
# 类通过调用非私有静态方法间接调用私有静态实例方法!
Foo.get_f()
# 对象通过调用非私有静态方法间接调用私有静态实例方法
obj = Foo('Thanlon')
obj.get_f()
'''
私有静态方法!
'''
3、私有类方法
通过非私有实例方法可以间接访问私有类方法:
# 私有类方法
class Foo:
def __init__(self, name):
self.name = name
@classmethod
def __f(cls):
print(cls)
def get_f(self):
self.__f()
# Foo.__f()
obj = Foo('Thanlon')
obj.get_f()
'''
<class '__main__.Foo'>
'''
通过非私有静态方法也可以间接访问私有类方法:
# 私有类方法
class Foo:
def __init__(self, name):
self.name = name
# 私有静态方法
@classmethod
def __f(cls):
print(cls)
def get_f(self):
self.__f()
# Foo.__f()
# 静态方法
@staticmethod
def reget_f():
Foo.__f()
# 类调用静态方法reget_f
Foo.reget_f()
# 对象调用静态方法reget_f
obj = Foo('Thanlon')
obj.get_f()
'''
<class '__main__.Foo'>
<class '__main__.Foo'>
'''
哪里书写有问题,还望指出,Python学习与交流可以加我QQ:3330447288