本文以廖雪峰的官方**為參考來學習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 函式按照長短 ...