私有实例方法/私有静态方法/私有类方法 --Pytho3

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (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

猜你喜欢

转载自blog.csdn.net/Thanlon/article/details/94217947