如何将某些东西添加到属性中?

如何修改或添加到类中?


例如,在下面的代码中,hello可以修改a我使用的 是什么意思__init__?我对 OOP 仍然有很多不确定性,尤其是实例化与其他事物之间的关系。


我确信这是可能的;如果是这样,我该怎么做?


class Foo:

    def __init__(self, a):

        self.a = a

     

    def hello(self):


慕哥9229398
浏览 161回答 2
2回答

杨__羊羊

您已经成功地添加/修改了类实例。即,__init__获取一些a并将其作为属性添加.a到实例self。对变量和属性使用相同的名称是偶然的——您也可以使用不同的名称:class Bla:    def __init__(self, b):        self.a = b  # add `b` as attribute `a`一旦将属性添加到实例,默认情况下可以自由读取和覆盖该属性。这适用于初始方法、其他方法以及可以访问实例的任何其他函数/方法。class Bla:    def __init__(self, b):        self.a = b  # add `b` as attribute `a`    def lol(self, c):        self.a = c  # add `c` as attribute `a` (discarding previous values)    def rofl(self, d):        self.a += d  # re-assign `self.a + d` as attribute `a`# external function modifying `Bla` instancedef jk(bla, e):    bla.a = e  # add `e` as attribute `a` (discarding previous values)

富国沪深

我不确定 Bla.lol() 如何修改提供给它的参数 a,但它可以更改属性 Bla.a或self.a从对象内部引用它,该对象最初具有a分配给它的参数值。我们可以让函数lol为属性分配一个新值a,在这种情况下,我将假设a它是一个字符串,并使用以下短语扩展该字符串' has been altered':>>> class Bla:...     def __init__(self, a):...         self.a = a... ...     def lol(self):...         self.a += ' has been altered'...         >>> instance = Bla('the arg a')>>> instance.a  # check a'the arg a'>>> instance.lol()  # modifies a>>> instance.a  # check a again'the arg a has been altered'>>> instance.lol()  # we can alter it again, as many times as we run the function>>> instance.a  # and see it has been altered a second time'the arg a has been altered has been altered'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python