从具有不同类的类访问实例变量

Accessing instance variables from a class with a different class

提问人:Crystal Element 提问时间:5/20/2023 更新时间:5/20/2023 访问量:37

问:

正如标题所说,我需要从一个类访问一个实例变量,该类位于不同的文件中,并在该类的 init 方法中定义,并且将是一个布尔值。我已将该类导入到另一个类中,我需要检查该 bool 之前是 True 还是 False。例如,如果我想检查的方法看起来像这样。

    def remove_album(self,album_name):
        if album_name: #>>how do check to write this if?
            return 'Album has been published. It cannot be removed'

我需要删除“album_name”,但在执行此操作之前,我需要检查另一个导入类中的 bool 变量,正如我所说,它在 init 方法中定义为 self.bool=bool,并且该 bool 不会在任何其他类的方法中返回。我该怎么做?

我不知道该尝试什么。我知道这很简单,但我只是不知道该怎么做。

Python OOP 变量 实例

评论

0赞 ndc85430 5/20/2023
我真的不明白你想做什么。当你从另一个类说“需要从一个类访问实例变量”时,这听起来是错误的,因为类通常应该封装它们的数据,并为使用它们的其他类提供有用的服务(即,通过提供做一些有用的事情的方法)。你能举一个更完整的例子来解释你的意思吗?
0赞 Val77 5/20/2023
如果它不是私有变量,只需使用符号来访问变量?例如.if instance.bool: ...
0赞 Crystal Element 5/20/2023
导入的类(我们称之为 Album)有一个方法(我们称之为 publish_album),它发布该“album”,就像制作 self.bool=True(默认情况下为 False)一样。我正在使用一个类 Album2,我的目标是检查该remove_album方法(这是类 Album2 的方法),如果该 self.bool 是 True 或 False。希望我描述正确。

答:

0赞 Val77 5/20/2023 #1

我想这就是你想要的?

class Album:
    def __init__(self, *args, **kwargs):
        self.bool = False

    def publish_album(self):
        self.bool = True

class Album2:
    def remove_album(self, album):
        if album.bool:
            return 'Album has been published. It cannot be removed'

foo = Album()
print(foo.bool) # False
foo.publish_album() # sets foo.bool to True
print(Album2().remove_album(foo)) # Album has been published. It cannot be removed

评论

0赞 Hermann12 5/22/2023
但是如果 self.bool = false,它也不会被删除。
0赞 Val77 5/22/2023
@Hermann12对不起,我不太明白你的意思。你能进一步详细说明吗?
0赞 Hermann12 5/22/2023
感谢您的重播。我认为,如果您有 Album 的第二个实例,假设 foo2 和 self.bool = false,函数remove_album应该删除该实例,因为函数名称告诉我们。也许还有别的......不见了。
0赞 Val77 5/22/2023
没关系。“如果您有 Album 的第二个实例,假设 foo2 和 self.bool = false,则函数remove_album应该删除该实例”。好吧,我不确定 OP 想要如何实现删除功能。我所做的只是演示如何使用语法来检查/访问另一个实例的变量。鉴于 OP 没有详细说明他们希望如何编写函数,我想我们可以保持该部分不变。.