Python 3在不同文件中的类之间的作用域?

Python 3在不同文件中的类之间的作用域?,python,python-3.x,class,variables,scope,Python,Python 3.x,Class,Variables,Scope,我已经研究了很久,没有发现有人问过这个特定的问题(所以我可能遗漏了一些简单的问题!),但我在将类划分为不同的.py文件时遇到了困难 情景: Main类导入设置类文件和工作类文件..设置类使用从对象类文件实例化的对象填充列表 工作类希望在该列表中循环并更改每个对象中的值 感谢stovfl在评论中提供了答案。我终于破译了斯托夫的意思:D 我想 下面的代码适用于任何想知道的人: 主要内容: Set_Test.py: class Settings: def __init__(self):

我已经研究了很久,没有发现有人问过这个特定的问题(所以我可能遗漏了一些简单的问题!),但我在将类划分为不同的.py文件时遇到了困难

情景:

Main类导入设置类文件和工作类文件..设置类使用从对象类文件实例化的对象填充列表


工作类希望在该列表中循环并更改每个对象中的值 感谢stovfl在评论中提供了答案。我终于破译了斯托夫的意思:D

我想

下面的代码适用于任何想知道的人:

主要内容:

Set_Test.py:

class Settings:

    def __init__(self):
        self._settingsID = 1

    @property
    def settingsID(self):
        return self._settingsID

    @settingsID.setter
    def settingsID(self, value):
        self.settingsID = value
class Settings:

    def __init__(self):
        self._settingsID = 1

    @property
    def settingsID(self):
        return self._settingsID

    @settingsID.setter
    def settingsID(self, value):
        self._settingsID = value
Test_Code.py

import Set_Test
sting = Set_Test.Settings()

class Testy():

    def changeVal(self, sting):
        print(sting.settingsID)
        sting.settingsID = 8
        print(sting.settingsID)

是的,但问题到底是什么?您看到了什么行为,您期望得到什么?我希望Test_代码中的changeVal方法更改Set_测试中settingsID的值。因此,在第二次打印时,它应该打印新值。@Ripfury这应该是
self.\u settingsID=value
,请注意下划线,因为它只打印1,而不是8@Ripfury而这个
Set\u Test.Settings.settingsID=8
会导致
类变量
不按预期更改实例变量的值。
import Set_Test
import Test_Code

sting = Set_Test.Settings()
tc = Test_Code.Testy()

ID = sting._settingsID
print(f'Settings ID is: {ID}')

tc.changeVal(sting)

ID = sting._settingsID
print(f'Settings ID is: {ID}')
class Settings:

    def __init__(self):
        self._settingsID = 1

    @property
    def settingsID(self):
        return self._settingsID

    @settingsID.setter
    def settingsID(self, value):
        self._settingsID = value
import Set_Test
sting = Set_Test.Settings()

class Testy():

    def changeVal(self, sting):
        print(sting.settingsID)
        sting.settingsID = 8
        print(sting.settingsID)