程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果我更改值 test.i,该类是否会像对象测试那样?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如果我更改值 test.i,该类是否会像对象测试那样??

开发过程中遇到如果我更改值 test.i,该类是否会像对象测试那样?的问题如何解决?下面主要结合日常开发的经验,给出你关于如果我更改值 test.i,该类是否会像对象测试那样?的解决方法建议,希望对你解决如果我更改值 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 不会改变 iclass 的值。

testclass Testobject 并且您只是更改了 itest 值对象

您需要知道类和对象之间的区别。

请通过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,请注明来意。