封装未正确初始化?

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

我只是在四处寻找关于封装的知识,发现我们无法打印出已封装的值,我们必须定义一个单独的方法来打印出该值,但是在我的代码中,我尝试打印出一个属性的类,它起作用了,所以封装有错误吗?

代码:

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 encapsulation
1个回答
1
投票
在Python中,您可以从类之外创建类中的公共变量,如下所示:

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

[编写此行time1.hours = 55时,实际上是在对象hours中创建了一个名为time1的变量,它与该类中定义的变量__hours不同。
© www.soinside.com 2019 - 2024. All rights reserved.