1 Star 0 Fork 2

osforge/learning-python

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
24.使用__slots__.py 904 Bytes
一键复制 编辑 原始数据 按行查看 历史
绯末 提交于 2019-12-31 08:34 +08:00 . 增加使用slots
# 定义一个类
from types import MethodType
class Student(object):
pass
# 实例化类,绑定属性name
s = Student()
s.name = 'Tom'
print(s.name)
# 给实例绑定函数
# 但是这个函数只能用于这个实例,不能用于同类的其它实例
def set_name(self, name):
self.name = name
s.set_name = MethodType(set_name, s)
s.set_name('Tina')
print(s.name)
# 解决这个问题,可以使用给类绑定函数
def set_age(self, age):
self.age = age
Student.set_age = set_age
s.set_age(18)
print(s.age)
# 使用__slots__限制实例的属性,比如我们只允许对类添加name和age属性
class Teacher(object):
__slots__ = ('name', 'age')
t = Teacher()
t.name = 'Tom'
t.age = 18
print(t.name)
print(t.age)
# 下面不在__slots__里面的属性就会报错
# t.gender = 'male'
# TODO __slots__只对当前类的实例起作用,对继承的子类不起作用
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/osforge/learning-python.git
git@gitee.com:osforge/learning-python.git
osforge
learning-python
learning-python
master

搜索帮助