我开始在python中学习class
,并试图了解attributes
中methods
,parameters
和OOP
的概念
我正在使用3个例子:
example 1
class Clock(object):
def __init__(self, time):
self.time = time
def print_time(self):
time = '6:30'
print self.time
使用:
clock = Clock('5:30')
clock.print_time()
打印5:30
example 2
class Clock(object):
def __init__(self, time):
self.time = time
def print_time(self, time):
print time
with:
clock = Clock('5:30')
clock.print_time('10:30')
打印10:30
。
example 3
class Clock(object):
def __init__(self, time):
self.time = time
def print_time(self):
print self.time
最后,用:
boston_clock = Clock('5:30')
paris_clock = boston_clock
paris_clock.time = '10:30'
boston_clock.print_time()
打印10:30
可以请某人解释一下这些示例中的属性,方法和参数是如何绑定到对象的?
答案 0 :(得分:1)
属性是类或实例中的变量。在这种情况下,变量hello
是类Hi
的属性。
class Hi:
hello = "Hello World!"
方法是类中的函数,因此对于类似的函数,函数greet
是类Hi
的方法。
class Hi:
def greet(self):
pass
参数是进入方法的输入。因此,字符串"Hello World!"
是类say
中方法Hi
的参数。
class Hi:
def say(self, saying):
print(saying)
Hi().say("Hello World!")
软件工程StackExchange网站上关于OOPL的一个很好的问题。 Explaining OOP Concepts to a non technical person.
答案 1 :(得分:1)
此链接here可以解释有关类属性/方法/参数的更多信息。
但是,我确实理解这些概念有多复杂,所以我会回答你的问题(尽管将来会尝试提出更具体的问题!)。
在示例一中:
init
(初始值设定项)和print_time
都是类属性。初始化clock
变量并传入参数'5:30'时,它会访问init
函数并点击self.time = time
代码行。由于使用点表示法访问time
,因此time
是INSTANCE属性(特定于单个对象)。
当您调用self.print_time()
时,time
有一个特定于函数调用的局部变量,因此实例属性不会更改。这就是为什么当你打印self.time
时它仍然是5:30。
在示例二中:
在这种情况下,init
和print_time
函数都是类属性(类似于上面的示例)。 clock
对象的初始化与上面相同。但是,当它调用print_time
时,time
是参数'10:30',因此当我们只打印time
时(注意我们没有使用任何点表示法),它会打印出来只有'10:30'的局部变量。
在示例三中:
init
和print_time
都是类属性,与上面两个示例相同。初始化boston_clock
对象时,它类似于示例一和二。然后将名称paris_clock
分配给对象boston_block
(请注意paris_clock
和boston_clock
只是指向同一对象的名称,就像我可以拥有两个名称一样。因此,当我们执行代码行paris_clock.time = '10:30'
时,此单个对象的INSTANCE属性将更改为“10:30”。但是,由于boston_clock
指向与paris_clock
相同的对象,boston_clock
的{{1}}属性也是'10:30'。