python基础特性之函数性质

  

函数属性

1。为了保护属性,不让它随意的被更改(a.width=xxx)(起码,要符合某些条件),所以我们引入了设置和获取方法,虽然这个需要自定义(如下图的set_size, get_size方法)。

祝辞祝辞祝辞类矩形:

…def __init__(自我):

…自我。宽度=0

…自我。身高=0

…def set_size(自我、大小):

…self.width,自我。身高=大小

…def get_size(自我):

…返回self.width,自我。高度

祝辞祝辞祝辞r=矩形()

祝辞祝辞祝辞r。宽度=10

祝辞祝辞祝辞r。身高=5

祝辞祝辞祝辞r.get_size ()

(10、5)

祝辞祝辞祝辞r.set_size ((150100))

#注意:

# r.set_size((150100))即:

# self.width, self.height=(150100)或150100即:

# self.width=150,自我。身高=100

祝辞祝辞祝辞r。宽度150

祝辞祝辞祝辞r。身高100

2。但是这样设置和取得属性值(这里指大小的值)太麻烦了,如果要设置和取得多个属性的值,要使用非常多次的设置和获取方法,所以,这里,我们将设置和获取方法封装起来,让用户像宽度和高度一样快速赋值和访问。

祝辞祝辞祝辞类矩形:

…def __init__(自我):

…自我。宽度=0

…自我。身高=0

…def set_size(自我、大小):

…self.width,自我。身高=大小

…def get_size(自我):

…返回self.width,自我。高度

#使用财产函数,将大小的获取和设置方法都封装到大小这个变量中

…大?属性(get_size set_size)

祝辞祝辞祝辞r=矩形()

祝辞祝辞祝辞r。宽度=10

祝辞祝辞祝辞r。身高=5

祝辞祝辞祝辞r。大小#快速访问大小,取得大小的值,无需关心大小内部的获取值的函数细节

(10、5)

祝辞祝辞祝辞r。大?150100

祝辞祝辞祝辞r。宽度150

祝辞祝辞祝辞r.size=(100年,50)#快速设置大小的值,无需关心大小内部的设置值的函数细节

祝辞祝辞祝辞r。宽度100

祝辞祝辞祝辞r。高度50

提示——关于财产的参数问题:

类属性([得到[,[,▽[医生]]]])

#注:

# 1。得到,获取属性值的函数

# 2。设置,设置属性值的函数

3. # del——删除属性值函数

# 4。医生——属性描述信息

没有传递任何参数的时候,如:大?属性(),则创建的特性大小将既不可读也不可写。

只传递一个参数的时候,如:大?属性(get_size),则创建的特性大小将是只读的。

传递三个参数,即传递,得到和德尔。

传递四个参数,即传递,得到德尔和doc(文档字符串,用于描述属性,直接传入信息的内容字符串即可)。如:

大?属性(获取、设置德尔,“我“x”属性”。)

静态方法和类方法

祝辞祝辞祝辞MyClass类:

…def冰毒():

…打印(“这是一个常见的方法”)

#创建静态方法

#方法一:手工替换

…def smeth ():

…打印(“这是一个静态方法”)

…smeth=staticmethod (smeth)

#方法二:使用修饰器

…# @staticmethod

…# def smeth ():

…#打印(“这是一个静态方法”)

#创建类方法

#方法一:手工替换

…def cmeth (cls):

…打印(“这是一个类方法”)

…cmeth=classmethod (cmeth)

#方法二:使用修饰器

…# @classmethod

…# def cmeth (cls):

…#打印(“这是一个类方法”)

#通过类直接访问方法

祝辞祝辞祝辞MyClass.meth ()

这是一个常见的方法

祝辞祝辞祝辞MyClass.smeth ()

这是一个静态方法

祝辞祝辞祝辞MyClass.cmeth ()

这是一个类方法

#通过类实例访问方法

祝辞祝辞祝辞myclass=myclass ()

祝辞祝辞祝辞myclass.meth ()   #实例myclass会将自身作为一个参数传递给冰毒方法,而冰毒方法并没有为它定义参数自我,从而导致异常

回溯(最近的电话最后):

文件",1号线,在

TypeError:冰毒()接受0位置参数,但1给出了

祝辞祝辞祝辞myclass.smeth ()

这是一个静态方法

祝辞祝辞祝辞myclass.cmeth ()

这是一个类方法


python基础特性之函数性质