@property
废话少说,贴上代码(代码参考@廖雪峰教程)
class Student(object):
def __init__(self, score):
self._score = score
@property
def score(self):
return self._score
@score.setter
def score(self, value):
'''这里对score进行判断、处理的操作'''
self._score = value
通过这样的处理,实例对象self._score
属性不会被任意改变,可以使用score.setter
进行控制
调用方式:
s = Student(80)
'''查看分数'''
s.score
'''修改分数'''
s.score(100)
@classmethod
简单来说,classmethod就是讲类中的方法变成类方法
下面贴一段在学习scrapy时的代码实例 :
class TutorialPipeline(object):
def __init__(self, redis_host, redis_port):
self._redis_host = redis_host
self._redis_port = redis_port
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.settings.get('REDIS_HOST'), crawler.settings.get('REDIS_PORT'))
该类方法的功能为,返回一个实例对象