我需要将所有类属性设为私有并在 Python 中为它们定义一个公共方法吗?

问题描述 投票:0回答:1

我真的不知道当属性在类外使用时哪个更好。

将其定义为公共属性:

class Test:
    def __init__(self) -> None:
        self.a = 0


test = Test()
test.a += 1
print(test.a)

将其定义为私有并公开方法来更改或读取它:

class Test:
    def __init__(self) -> None:
        self.__a = 0

    def a(self) -> None:
        return self.__a

    def increase_a(self) -> None:
        self.__a += 1

test = Test()
test.increase_a()
print(test.a())
python
1个回答
0
投票

没有。

这不是该语言的预期使用方式。 如果类

Test
有记录的属性
a
,类的用户现在应该何时以及何时不更改它。

如果由于某种原因您需要保护对

a
的访问(例如,为了限制值或类型,或者当它可以更改时),您可以从您的属性中创建一个
property
,并且所有使用的代码
Test
可以继续保持不变 - 但从现在起对
.a
的访问将受到代码保护。

但是除非你需要它作为属性,否则你不应该这样做,你只是在编写无用的样板代码。

© www.soinside.com 2019 - 2024. All rights reserved.