Discuss / Python / 使用__slots__ 练习

使用__slots__ 练习

Topic source
from types import MethodType

class Student(object):
    pass

def set_age(self,age):
    self.age = age
def set_score(self,score):
    self.score = score

s = Student()
#1.为实例添加方法
s.set_age = MethodType(set_age,s)
s.set_age(21)
print(s.age)

#2.为类添加方法
Student.set_score = set_score
s.set_score(99)
print(s.score)

#也可以这样
Student.set_score = MethodType(set_score,Student)
s.set_score(99)
print(s.score)

#3.但是不能这样
s.set_age = set_age
s.set_age(21)
print(s.age)
class Student(object):
    __slots__ = ('name','age')

class Collage(Student):
    pass

s = Student()
g = Collage()

s.name = 'Gabe'
s.age = 21
#实例无法绑定score属性
s.score = 99
#__slots__对继承的子类不起作用
g.score = 99

print(s.name)
print(s.age)
print(s.score)
print(g.score)

  • 1

Reply