如何解决每次调用对象时更新实例变量
我正在尝试创建一个类,该类使用随机生成的字符串作为每个实例的 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
解决方法
错误在 Assembly
初始化中是正确的:
def __init__(self,Part):
# Input agruments
Part.__init__(self)
出于某种奇怪的原因,您显式地重新初始化了 Part
。这会生成一个新的部件号。你为什么这样做?对于任何对象,__init__
只应在其初始创建时调用一次,永远。从 Assembly
中删除它。此外,继续通过课堂示例来了解结构和流程。
注意import
语句位于文件的顶部。每次创建新对象时,您的代码都会重复 import
,这几乎总是在浪费时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。