封装未正确初始化?
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.
我只是想了解更多关于封装的知识,发现我们无法打印出已封装的值,我们必须定义一个单独的方法来打印出值,但在我的代码中我试图打印出我的 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.