每次调用对象时更新实例变量

Instance variable updating every time object is called

我正在尝试创建一个 class,它使用随机生成的字符串作为每个实例的 ID,稍后将在另一个 class 中继承。下面是我正在做的事情的简化版本。

class Part():

    def __init__(self, type):
        import random
        import string

        self.type = type

        # Generate instance ID
        self.part_serial = ''.join(random.choice(string.ascii_lowercase + string.digits) for i in range (8))

class Assembly():

    def __init__(self, Part):
        import random
        import string

        # Input agruments
        Part.__init__(self)

        # Use inherited part_serial
        self.assembly_serial = Part.part_serial + "-" + ''.join(random.choice(string.ascii_lowercase + string.digits) for i in range (8))

问题是一旦我创建了部件,每次我调用对象时,id 都会改变。有什么方法可以使用类似的东西创建实例变量,每次调用对象时都不会改变?

test_part = Part("A")
print(test_part.part_serial) # Returns 5347c17a

test_assembly = Assembly(test_part) # Returns fda8721d-47b6c677 but should return 5347c17a-xxxxxx

错误就在Assembly初始化:

def __init__(self, Part):

    # Input agruments
    Part.__init__(self)

您出于某种奇怪的原因明确地重新初始化了 Part。这会生成一个新的零件编号。你为什么要那样做? __init__ 只应在任何对象的初始创建时调用一次,并且 永远不会 再次调用。从 Assembly 中删除它。此外,请继续研究 class 个示例以了解结构和流程。


N.B。 import 语句位于文件的顶部。每次创建新对象时,您的代码都会重复 imports ,这几乎总是在浪费时间。