Python中面向对象编程的基本问题

时间:2011-04-14 01:48:59

标签: python

我很难掌握一个类的方法中的变量,我想知道是否有人可以解释这些“工作”如何帮助我更好地理解它。

例如:

时间类

中的

def __init__(self, hour,minute, second)
    self.hour = hour
    self.minute = minute
    self.second = second

def print_time(self):
    print '%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second)

time = Time(h,m,s)
time.print_time()

“自我”变量的变化在哪里?为什么调用方法(看起来更直接)为:method(var1(subject),var2,var3,var4)?而不是subject.method(var2,var3,var4)? (我知道我对此的理解充其量是不稳定的,所以如果我的任何条款也不正确,请纠正我。)

另一个例子也非常有帮助。谢谢。

2 个答案:

答案 0 :(得分:4)

  1. 万。特定于Python的魔法,确切地说;其他语言可能(并经常)选择以不同方式进行。

  2. 可以。在Python中,当Class.method(obj)obj.method()的实例时,objClass相同。 __init__()是一个特例。

答案 1 :(得分:0)

你从哪里得到这个奇怪的代码?这没有意义。

您应该查看“How To Think Like a Computer Scientist”,其代码示例与您发布的内容类似,但它是正确的,并且它解释了变量范围。请查看上述网址的第15.6节。