【发布时间】:2021-08-09 04:34:04
【问题描述】:
我正在尝试创建一个使用随机生成的字符串作为每个实例的 id 的类,该实例稍后将在另一个类中继承。下面是我正在做的一个简化版。
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
【问题讨论】:
-
请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。另外,我不知道您所说的“调用零件”是什么意思-您调用了函数或方法;对象不可调用。
-
道歉。我还是编程新手,还不知道如何使用该术语。我将代码 sn-p 更新为工作示例。这是我遇到的问题的一个粗略示例。我发现了一些属性,我可以使用 UUID 并且每次引用对象时它都不会改变(希望这是正确的术语)但不是全部。有些人需要在代码 sn-p 中使用带有 ''.join() 的 for 循环。
-
编辑:UUID 不像我想象的那样工作。
标签: python inheritance uuid instance-variables