1. 程式人生 > >@property, @classmethod基本用法

@property, @classmethod基本用法

@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'))

該類方法的功能為,返回一個例項物件