亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號