函数属性
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 ()
这是一个类方法