python工作流程_讨论 - 廖雪峰的官方网站

例:

class test:

def __init__(self):

self.__name=None

@myproperty

def name(self):

return self.__name

@name.setter

def name(self,value):

if value < 0:

print('no')

return

self.__name=value

注释:类myproperty中各参数指什么

方法函数中传入的第一个参数self  是 name(也就是@myproperty  下面的函数name)

@myproperty         定义完name函数之后,会自动运行property中的构造函数__init__

@name.setter        运行name.setter函数,参数:self=name #第一个name   setx=test.name                   (同理:getx=test.name  #@name.getter  下面的那个name函数)

setter函数中的: return type(self)(self.getx, setx, self.delx, self.__doc__)                              相当于:   myproperty(text.name)    #此时,除了setx外,其余的都仍是None   (因为我在例子中没有定义其余的)

setter ,getter  这两个函数的作用是:定义类对象中的函数,使原函数名具有新的作用,

当在交互模式中出现:

类名.name   ——>    运行name.__get__函数,实参instance=类对象, owner=类    #print(owner):                           也相当于类对象的类型

返回值  self.getx(instance)     相当于:  test.name(t)                #注意,这里虽然和下文中都是test.name, 只是因为方便大家理解,这两个name并不是同一个,计算机看到的也是getx和setx,会自动区分

类名.name=xxx   ——>   运行name.__set__函数,value=xxx

返回值  return self.setx(instance,value)    相当于:   test.name(t, xxx)

__get__,  __set__   这两个函数的作用是:在返回值中调用原函数

至于为什么python看到   test.name=xxx   就会调用__get__   我想不通,有知道的希望告诉我一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值