#直接定义一个test()函数 deftest():print"i am a normal method!"#定义一个类,其中包括一个类方法,采用@staticmethod修饰 classT:@staticmethoddefstatic_test():#没有self参数print"i am a static method!"if __name__ =="__main__":test()T.static_test()T().static_test()output: i am a normal method! i am a static method! i am a static method!
@classmethod示例:
classT:@classmethoddefclass_test(cls):#必须有cls参数 #这里第一个参数是cls, 表示调用当前的类名print"i am a class method"if __name__ =="__main__":T.class_test()T().class_test()output: i am a classmethod i am a classmethod
classFoo:def__init__(self,val):self.__NAME=val #将所有的数据属性都隐藏起来@propertydefname(self):return self.__NAME #obj.name访问的是self.__NAME(这也是真实值的存放位置)@name.setterdefname(self,value):ifnotisinstance(value,str):#在设定值之前进行类型检查raise TypeError('%s must be str'%value)self.__NAME=value #通过类型检查后,将值value存放到真实的位置self.__NAME@name.deleterdefname(self):raise TypeError('Can not delete')f=Foo('egon') print(f.name) # f.name=10 #抛出异常'TypeError: 10 must be str' del f.name #抛出异常'TypeError: Can not delete'