プライベート/プライベート静的メソッド/プライベートクラスメソッドの方法として--Pytho3

クリエイティブコモンズライセンス 著作権:帰属、紙ベースを作成するために他人を許可し、(同じライセンスで元のライセンス契約に基づいて用紙配布する必要がありますクリエイティブコモンズ

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