为了账号安全,请及时绑定邮箱和手机立即绑定

Python:无法复制 pygame 表面对象

Python:无法复制 pygame 表面对象

慕村9548890 2022-01-05 10:44:35
我有一堂课:class personInfo:    def __init__(self,name,age,height,hairColour,face):        self.name = name        self.age = age        self.height = height         self.hairColour = hairColour        self.face = face我在这里有几个图像,我使用 pygame 模块加载。yellowFace = pygame.image.load("happy.png")blueFace = pygame.image.load("sad.png")redFace = pygame.image.load("angry.png")我创建了一个包含该类实例的数组。我在这里填充它。personArray = []while len(array) != 10:    personArray.append(personClass("John",32,6,"Blond",yellowFace))我想将该类的实际变量(名称、年龄、身高、头发颜色等)存储在我称为“personStorage”的变量中。但是,我不能让那个 var 可变,因为我需要访问那个 var 的值并更改它们。这样做不能改变 personArray 中任何实例的值。我该怎么做?编辑:我似乎也无法复制这个类,因为我收到一个类型错误,上面写着:“不能腌制 pygame.surface 对象”,因为我在该类中有一个表面对象的值。
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

如果我理解你想要做什么:


class PersonInfo:

    def __init__(self,name,age,height,hairColour):

        self.name = name

        self.age = age

        self.height = height 

        self.hairColour = hairColour

    def toList(self):

        return [self.name, self.age, self.height, self.hairColour]

顺便说一下,类名的第一个字母总是大写。


编辑:要实现您想要做的事情:


    old = PersonInfo("old", 1, 2, "blue")

    new = PersonInfo(*old.toList())

    new.name = "new"

    print(old.name) #'old'


查看完整回答
反对 回复 2022-01-05
?
呼如林

TA贡献1798条经验 获得超3个赞

使用复制模块:


函数 copy() 对任意 Python 对象的浅拷贝操作。


import copy



class PersonInfo:

    def __init__(self, name, age, height, hair_colour):

        self.name = name

        self.age = age

        self.height = height

        self.hairColour = hair_colour



personArray = []

for x in range(20, 24):

    personArray.append(PersonInfo("John", x, 6, "Brown"))



personStorage = copy.copy(personArray[2])

personStorage.name = "Ana"


print("\rpersonArray[2].name is %s\n"

      "\rpersonStorage.name is %s"

      % (personArray[2].name, personStorage.name))


查看完整回答
反对 回复 2022-01-05
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

我已经创建了 setter 和 getter 来获取数据。此外,您还可以创建保存数据的实例的副本。


from copy import deepcopy

class PersonInfo:

    def __init__(self,name,age,height,hairColour):

        self.name = name

        self.age = age

        self.height = height 

        self.hairColour = hairColour


x = PersonInfo("Mario",34,1.70,"blue")


print(x.height)  # prints 1.70


x1 = deepcopy(x)


print(x1.age)


查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信