1. 程式人生 > >Python學習之__slots__屬性

Python學習之__slots__屬性

self. 但是 name obj import print blog 網站 usr

在廖老師的網站上學習的__slots__屬性
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/5/14 17:16
# @Author  : Aries
# @Site    : 
# @File    : 使用_slots_.py
# @Software: PyCharm

from types import MethodType
#
# class Student(object):
#     pass
# s=Student()
# s.name="zb"
# print(s.name)
# def setAge(self,age):
# self.age=age # s.setAge=MethodType(setAge,s)##這裏給實例綁定方法的做法值得關註,這就是動態語言的魅力,給某個實例添加某個方法,但是 # #卻對其他的實例沒有影響 # ss=Student() # print(hasattr(ss,"setAge")) # print(hasattr(s,"setAge")) # Student.setAge=setAge#給Student類綁定方法,這樣使得每個Student類的實例都有setAge方法 # print(hasattr(ss,"setAge")) # print(hasattr(s,"setAge"))
‘‘‘ 以上是對實例和類綁定相應的方法,但是,如果我們想要對類的屬性進行限制的時候,就要用到_slots_屬性了。 如下 ‘‘‘ class Student (object): __slots__=("name","age","sex") pass s=Student() s.name="zs" s.age=44 s.sex="F" class graduate(Student): pass g=graduate() g.sex="M" g.age=10 g.name="ls" g.score=55#註意,這裏的score屬性並沒有在父類的__slots__屬性中,但是,在子類中還是可以添加綁定的,也就是說,__slots__屬性是不繼承的


Python學習之__slots__屬性