大佬教程收集整理的这篇文章主要介绍了如果我更改值 test.i,该类是否会像对象测试那样?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
input:
7 3
12 1 78 90 57 89 56
Output:
78 90 90 90 89
如果我更改属性 class Test:
def __init__(self):
self.i = "Test"
self.o = f"{self.i} Test"
test = test()
print(test.o)
test.i = "Hello"
的值,类会不会看起来像那样(仅用于对象测试)?
test.i
通过将 test.i
的值更改为 Hello
不会改变 i
的 class
的值。
test
是 class Test
的 object 并且您只是更改了 i
的 test
值对象仅。
您需要知道类和对象之间的区别。
请通过this
,如果我理解你的问题:
通过执行 test.i = "Hello"
,您正在修改其属性 i
,但您不是在“修改类”或其代码。您只是更改恰好是对象属性的变量的值。
所以,这个类“看起来不像”,因为它没有任何意义。
此外,当您像这样在实例化类后更改 test.i
时,test.o
的值将不会被更改。
参见 what's the pythonic way to use getters and setters? :当修改 @property
时,您可以使用 test.o
来更改 test.i
。
class Test:
def __init__(self):
self.i = "Test"
@property
def o(self):
return f"{self.i} Test"
test = Test()
print(test.o) # 'Test Test'
test.i = "Hello"
print(test.o) # 'Hello Test'
请记住,Python 只会执行您告诉它执行的操作。如果您告诉它更改 test.i
的值,test.i
将具有新值,但除非您告诉它这样做,否则 python 不会修改 test.o
。
根据您定义类的方式,当您通过执行 test = Test()
创建新对象时,Python 会使用您放入 __init__()
的值对其进行初始化。
然后,当您通过执行 test.i
更改 test.i = "Hello"
时,您只会更改此值,而不会更改该类的其他属性。
这样想:如果我有一个对象并且我修改了它的一个属性,我不希望另一个被修改,除非我告诉 Python 这样做......这将是一个不需要的副作用。
@property
装饰器允许您定义一个函数,然后将其用作普通属性。在此示例中,每次您使用值 test.o
请求时都会重新计算 test.i
。
旁注:那些是可怕的变量名...
以上是大佬教程为你收集整理的如果我更改值 test.i,该类是否会像对象测试那样?全部内容,希望文章能够帮你解决如果我更改值 test.i,该类是否会像对象测试那样?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。