封装未正确初始化?

Encapsulation not initialized properly?

我只是想了解更多关于封装的知识,发现我们无法打印出已封装的值,我们必须定义一个单独的方法来打印出值,但在我的代码中我试图打印出我的 class 的一个属性并且它起作用了,所以我的封装有错误吗?

代码:

class Time:
    timethytom = 'Best'

    def __init__(self, hours, minutes):
        self.__hours = hours
        self.__minutes = minutes

    def setTime(self,hour,minute):
        self.__hours = hour
        self.__minutes = minute

    def getTime(self):
        print(f'Time is {self.__hours}hr {self.__minutes}min')

    def addTime(self, hour1, hour2, minute1, minute2):
        print(f'{hour1+hour2} hours and {minute1+minute2} minutes')


time1 = Time(10, 20)

time1.setTime(20,5)
time1.hours = 55
time1.getTime()

print(time1.hours)

提前致谢:)

在 Python 中,您可以从 class 中创建一个 public 变量到 class 中,像这样:

class xyz:
  pass

x = xyz()
x.y=10
print(x.y) #This will print 10

当你写这行 time1.hours = 55 时,实际上你在对象 time1 中创建了一个名为 hours 的变量,它与定义的变量 __hours 不同在 class.