通过属性引用访问 Python 类的属性

问题描述 投票:0回答:0

通过从 this link 获得的信息,这是官方 python 文档的一部分,我了解到:

类对象支持两种操作:属性引用实例化

到目前为止,只有在一种情况下我使用了Attribute references 来访问类的方法而不是Class instantiation(要了解这种情况,请参阅this post)。 我通常总是创建一个类的实例并通过这个实例调用类的方法。

通过这篇文章,我想知道,出于某些原因,有时是否会 better 使用属性引用而不进行任何实例化。

2 种访问方式看起来相同的示例

在下面的代码中,两种方法给出了相同的结果:

class A:
    attribute1 = 'initial_value'

    def set_attribute1_value(self, value):
        self.attribute1 = value

    def print_attribute1(self):
        print(self.attribute1)

def main():
    print("Use of ---> Class instantiation <---")
    a = A()
    a.set_attribute1_value("new_value")
    a.print_attribute1()

    print("+++")

    print("Use of ---> Attribute references <---")
    A.set_attribute1_value(A, "new_value")
    A.print_attribute1(A)

main()

main()
执行的输出是:

Use of Class instantiation
new_value
+++
Use of Attribute references
new_value

在示例中,使用属性引用避免了对象的实例化。

“方法容器”类

另一种情况表明我可以使用 属性引用 是当类只是一个方法容器(这是我在这篇文章中发明的一个术语)如下:

class B:
    def method1(self, arg):
        print(f"method1 executed arg={arg}")

    def method2(self):
        print("method2 executed")
        self.__methodN(self)

    # private method
    def __methodN(self):
        print("methodN executed")

def main():
    B.method1(B, "arg-value")
    B.method2(B)

main()

在我的应用程序中有一些这样的类,我认为这不是一个好的面向对象编程!

我的问题

  • 是否有一些原因可以避免创建类的实例并使用 Attribute references 来访问其属性?
  • 当我不需要一个类的多个实例时,这种方法可以节省资源(我在 嵌入式系统中使用 Python)?或者程序使用的资源不依赖于这个选择?
python class embedded-linux class-attributes
© www.soinside.com 2019 - 2024. All rights reserved.