Python定义公共方法、私有方法详细示例

2024-04-15 18:21 Python定义公共方法、私有方法详细示例已关闭评论

在Python中,方法(即类的函数)可以通过其名称约定来实现公共(public)和私有(private)的特性。这里的“公共”意味着可以从类外部自由访问,“私有”则表示这些方法或属性仅希望在类内部使用,对外部用户隐藏。

公共方法(Public Method)
公共方法就是没有特殊命名约定的方法,可以直接在类内外被访问。

class MyClass:
    def __init__(self, public_value, private_value):
        self.public_method_value = public_value
        self._private_method_value = private_value

    def public_method(self):
        return self.public_method_value * 2

# 使用公共方法
obj = MyClass(10, 20)
print(obj.public_method())  # 这是一个公共方法,可以直接调用

私有方法(Private Method)
私有方法通常是以双下划线__开始的(Python的名称修饰规则)。尽管Python没有真正的私有成员,但这种命名方式会被解释器转换成一个带有类名前缀的形式,从而在一定程度上避免外部直接访问。

class MyClass:
    def __init__(self, value):
        self.__private_method()

    def __private_method(self):
        print("This is a private method, called from within __init__.")

# 私有方法在类外部直接调用会触发AttributeError
# obj = MyClass(1)
# obj.__private_method()  # 直接调用会报错

# 但实际上Python并不会彻底阻止你访问,而是通过名称变换使其变得不易察觉
# obj._MyClass__private_method()  # 这种形式可以间接访问,但这违反了设计意图

注意:虽然Python没有严格的访问控制,但遵循命名约定是编写易于理解和维护代码的重要实践。当看到__private_method这样的名字时,开发者应当知道这不是预期从类外部直接调用的。

保护属性(Protected Method/Variable)
单下划线_前缀的成员被视为保护的,它们并不像双下划线那样进行名称修饰,但仍强烈暗示着这些成员是内部实现细节,不建议外部直接访问。

class MyClass:
    def __init__(self, protected_value):
        self._protected_method(protected_value)

    def _protected_method(self, value):
        print(f"This is a protected method working with {value}.")

# 类似于私有方法,保护方法也不鼓励直接调用
# obj = MyClass("protected")
# obj._protected_method("external call")  # 不推荐这样做

总之,Python通过命名约定来区分公共、私有和保护的成员。而实际的访问限制并不是强制性的,只是通过约定达成的一种编程规范。

当前文章价值7.15元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://teachcourse.cn/3344.html ,谢谢支持!

资源分享

分类:python 标签:, ,
014-一篇文章详细介绍Docker是什么以及如何使用Docker部署项目 014-一篇文章详细介绍Docker是什
Python内置关键字详细用法(1) Python内置关键字详细用法(1)
状态管理与ViewModel 状态管理与ViewModel
009-Python库Flask开发Web界面支持sql格式化和sqlite语法错误检测 009-Python库Flask开发Web界面

评论已关闭!