小白學python之使用 slots

2021-08-31 18:10:26 字數 1689 閱讀 7339

本文以廖雪峰的官方**為參考來學習python的。其學習鏈結為廖雪峰小白學python教程。

本文是學習到python的例項屬性和類屬性。參考鏈結廖雪峰python使用__slot__。

嘗試給例項繫結乙個屬性:

class student(object):

pass

s = student()

s.name = 'michael'

print(s.name)

執行結果: michael

嘗試給例項繫結乙個方法:

def set_age(self, age):

self.age = age

from types import methodtype

s.set_age = methodtype(set_age, s)

s.set_age(25)

print(s.age)

執行結果: 25

筆記

給乙個例項繫結的方法,對另乙個例項是不起作用的:

s2 = student()

s2.set_age(25)

執行結果,報錯:

traceback (most recent call last):

file "**********", line **, in

s2.set_age(25)

attributeerror: 'student' object has no attribute 'set_age'

def set_score(self, score):

self.score = score

student.set_score= set_score

s.set_score(100)

print(s.score)

s2.set_score(99)

print(s2.score)

筆記

給class繫結方法後,所有例項均可呼叫。

通常情況下,上面的set_score方法可以直接呼叫在class中。但動態繫結允許我們在程式執行過程中動態給class加上功能,這在靜態語言中很難實現。

class student(object):

__slots__=('name','age')

s = student()

s.name = 'michael'

s.age = 25

#print(s.name,s.age)

s.score = 99

執行結果,報錯:

traceback (most recent call last):

file "*********", line ***, in

s.score = 99

attributeerror: 'student' object has no attribute 'score'

筆記

python允許在定義class的時候,定義乙個特殊的__slots__變數,來限制該class例項能新增的屬性。

__slots__定義的屬性僅對當前類例項起作用,對繼承的子類是不起作用的。

小白學Python 之函式 二

定義乙個函式 defgetname name print 請叫我 format name return def getitem k b 0 for i in k b b i print b returnb 呼叫getname 小王 k 1,2,34,5,3,56,45,6,56,767,98 get...

小白學python之資料型別

每種語言都有自己的資料型別,python也不例外,但是python的變數是動態的,也就是說,其沒有固定的資料型別,既可以把整型賦值給變數,又可以接著再把字串型別賦值給變數,但是這樣也帶來乙個問題就是變數的改變是不可控的,如果想控制變數的型別,就需要class類了,本文將一一更新。整數在c中,可以直接...

小白學python之練習記錄2

本篇文章包含了python基礎的大部分練習,也是我學習python的練習記錄,我是小白,所以我更懂得小白該怎麼學習,勤加練習是成為大牛的必經之路,希望我的練習能對你學習python有所幫助 列表的排序 lst 6 2,7 4,1 3,5 print sorted lst sorted 函式按照長短 ...