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

為了賬號安全,請及時綁定郵箱和手機立即綁定

__slots__為什么沒有報錯,依然賦值了沒有的age

class Person:

? ? __slots__ = ('name','gender')

? ? def __init__(self,name,gender):

? ? ? ? self.name = name

? ? ? ? self.gender = gender


class Student(Person):

? ? __slots__ = ('name', 'gender','score')

? ? def __init__(self, name, gender,score):

? ? ? ? super().__init__(name, gender)

? ? ? ? self.score = score


Student.age = 12

s = Student('qrh','男',88)


print(s.name,s.gender,s.score,s.age) #》》qrh 男 88 12


正在回答

2 回答

__slots__ 只能限制為實例對象動態添加屬性和方法,而無法限制動態地為類添加屬性和方法。因為你是直接往類里面添加屬性和方法,所以實例s能訪問到age這個Student類的屬性

0 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//626802010001c5a613570618.jpg

我已經暈掉了,為什么還是執行成功了呢,age的值,也打印出來了:12

0 回復 有任何疑惑可以回復我~
#1

初_

s = Student('qrh','男',88) s.age=12 print(s.age) 這樣寫就報錯了呀。類實例。
2022-04-27 回復 有任何疑惑可以回復我~
#2

dotasfans

你這個圖實在不清晰。另外,我也跟你發生了同樣的問題,在定義person類時,這么寫:Person(object) 就沒有問題了,只能說這是版本的問題吧。我在自己電腦上3.7中不寫也行
2022-07-04 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

__slots__為什么沒有報錯,依然賦值了沒有的age

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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