2021 資訊之芽python班
player_name = 'MuscleManShaoChun' player_strength = 100000000 player_item = ["chicken breast", 'salad']
沒什麼問題,那就再加一個
player1_name = 'MuscleManShaoChun' player1_strength = 100000000 player1_item = ["chicken breast", 'salad'] player2_name = 'Rick_Astley' player2_strength = 20091025 player2_item = ["never", 'gonna', 'give', 'you', 'up']
沒什麼問題,那就再加一個
player1_name = 'MuscleManShaoChun' player1_strength = 100000000 player1_item = ["chicken breast", 'salad'] player2_name = 'Rick_Astley' player2_strength = 20091025 player2_item = ["never", 'gonna', 'give', 'you', 'up'] player3_name = 'NoName' player3_strength = 47 player3_item = ["NameChangeCard", 'cheatsheet']
越來越多,有點麻煩…
player1 = {'name':'MuscleManShaoChun', 'strength': 100000000, 'item': ["chicken breast", 'salad']}
class Player: pass
跟函數定義的方式很像
class Player: pass player1 = Player() player1.name = "MuscleManShaoChun" player1.strength = 100000000 player1.item = ["chicken breast", 'salad'] player2 = Player() player2.name = 'Rick_Astley' player2.strength = 20091025 player2.item = ["never", 'gonna', 'give', 'you', 'up']
這似乎沒有比較簡單
class Player: def set_variables(name, strength, items): Player.name = name Player.strength = strength Player.items = items def change_name(new_name): Player.name = new_name player1 = Player() player1.set_variables("MuscleManShaoChun", 100000000, ["chicken breast", 'salad']) player2 = Player() player2.set_variables('Rick_Astley', 20091025, ["never", 'gonna', 'give', 'you', 'up'])
哈哈笑死是不是出bug了
TypeError: set_variables() takes 3 positional arguments but 4 were given
obj = classname()
class Player: def __init__(self, name, strength, items): self.name = name self.strength = strength self.items = items def change_name(self, new_name): self.name = new_name player1 = Player("MuscleManShaoChun", 100000000, ["chicken breast", 'salad']) player2 = Player('Rick_Astley', 20091025, ["never", 'gonna', 'give', 'you', 'up']) player1.change_name('SuperMuscleManShaoChun')
class phone: password = '0000' a = phone() b = phone() c = phone() print(phone.password, a.password, b.password, c.password)
'0000', '0000', '0000', '0000'
a.password = '1234' print(phone.password, a.password, b.password, c.password)
'0000', '1234', '0000', '0000'
phone.password = '5678' print(phone.password, a.password, b.password, c.password)
'5678', '1234', '5678', '5678'
為什麼a沒有跟著改
用vars()
看attribute
vars(a) #{'password':'1234'} vars(b) #{} vars(c) #{} vars(phone) #{..., 'password':'5678'}
phone.color = 'black' print(phone.color, a.color, b.color, c.color)
'black', 'black', 'black', 'black'
a.price = 10000 print(phone.price, a.price, b.price, c.price)
AttributeError
利用之前的Player, 寫一個函數a.transfer_items(b)
把b的items全部轉移到a, 並平分他們的strength
class Player: def __init__(self, name, strength, items): self.name = name self.strength = strength self.items = items def transfer_items(self, b): self.items.extend(b.items) self.strength = b.strength = (self.strength+b.strength)/2