标签:nbsp 体会 new split 第一个 学习 sam 输入参数 hang
先到百度找了一下资料,引用个重点,对比昨天实例来理解:
引用:http://blog.csdn.net/carolzhang8406/article/details/6856817
在Python中,静态方法和类方法都是可以通过类对象和类对象实例访问。但是区别是:
引用:http://www.cnblogs.com/agnewee/p/5653936.html
@classmethod 优势特点:
OOP
的范式)cls
表示类对象,而不是类实例。这样很酷,因为如果我们继承Date
类,那么所有的子类也都将拥有from_string
这个方法---------------------------------------------------------------------------------------------------
@staticmethod 特点:
让我们来看一个使用的例子。
我们有一个日期字符串需要以某种方式验证。这个任务与之前一样要定义在Date
类内部,但是不要求实例化它。
静态方法在这种情况下就非常有用。看一下下面这个代码片段:
@staticmethod
def is_date_valid(date_as_string):
day, month, year = map(int, date_as_string_split(‘-‘))
return day <= 31 and month <= 12 and year <= 3999
is_date = Date.is_date_valid(‘11-09-2012‘)
现在正如我们了解到的staticmethod
的使用,我们不需要访问它所属的类,它本质上就是一个函数,调用方式和调用函数一样.静态方法无绑定,和普通函数使用方法一样,只是需要通过类或者实例来调用。没有隐性参数。
---------------------------------------------------------------------------------------------------------
@porperty 特点:
只读方法,实例调用不能输入参数。
引用:http://blog.csdn.net/my2010sam/article/details/8585336
@property 就是给函数设置只读属性。
这里定义的属性是一个只读属性,如果需要可写,则需要再定义一个setter:
class Rabbit(object):
def __init__(self,name):
self._name = name
@classmethod
def newClass(cls):
return ‘abc‘,cls,Rabbit(‘‘)
@property
def name(self):
return self._name
@name.setter
def name(self,newname):
self._name= newname
-----------------------------------------------------------------------------------------
实例方法通过隐性参数绑定在类上,函数内通过隐性参数访问实例属性。
Python2.7 学习体会 @classmethod @staticmethod @property 之间的关系二
标签:nbsp 体会 new split 第一个 学习 sam 输入参数 hang
原文地址:http://www.cnblogs.com/killad/p/6915060.html