Python 面向对象2

1.字段:

  静态字段:类字段,用类来访问,在代码加载的时候已经创建了。

  普通字段:对象字段,用对象来访问,在对象创建的时候才生成。

 

2.方法:

  所有的方法都是属于类

  普通方法:至少一个self,由对象来访问

  静态方法:@staticmethod修饰,任意参数,由类来调用执行,跟对象没有关系

  类方法:@classmethod修饰,最少有一个参数cls,类方法比静态方法多了一个功能,就是把类名自动传递给cls

 

3.属性:

  一个不伦不类的东西,具有方法的写法形式,具有字段的访问形式

class Pager:

    def __init__(self,total_pager):
        self.total_pager = total_pager

    def div_page(self):
        a1,a2 = divmod(self.total_pager,10)
        if a2 == 0:
            return a1
        else:
            return a1+1


p = Pager(102)
ret = p.div_page()
print (ret)

执行结果:11

  假如我们要做一个分页,通过传统的方式,那么写成上面的样子,如果改成property的方式,那么调用的时候,执行的时候不需要加括号

class Pager:

    def __init__(self,total_pager):
        self.total_pager = total_pager

    @property
    def div_page(self):
        a1,a2 = divmod(self.total_pager,10)
        if a2 == 0:
            return a1
        else:
            return a1+1


p = Pager(102)
ret = p.div_page
print (ret)

 

对于字段而言,我们可以通过p.total_pager来实现获取,也可以通过p.total_pager=103来设置,那么属性如何也通过这种方式来设置呢?

class Pager:

    def __init__(self,total_pager):
        self.total_pager = total_pager

    @property
    def div_page(self):
        a1,a2 = divmod(self.total_pager,10)
        if a2 == 0:
            return a1
        else:
            return a1+1

    @div_page.setter
    def div_page(self,value):
        pass
#
p = Pager(102)
# ret = p.div_page
# print (ret)
print (p.total_pager)
p.total_pager = 103
print (p.total_pager)
p.div_page = 100

执行的时候不会报没有attribute的错误

同样的,对于字段我们可以执行删除操作,那么对于属性方法而言呢?

class Pager:

    def __init__(self,total_pager):
        self.total_pager = total_pager

    @property
    def div_page(self):
        a1,a2 = divmod(self.total_pager,10)
        if a2 == 0:
            return a1
        else:
            return a1+1

    @div_page.setter
    def div_page(self,value):
        pass
    
    @div_page.deleter
    def div_page(self):
        pass

    def show(self):
        print ("HELLO")

p = Pager(102)
print (p.total_pager)
p.total_pager = 103
del p.total_pager
del p.div_page
p.show()

 

转载于:https://www.cnblogs.com/python-study/p/5735128.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值