码迷,mamicode.com
首页 > 编程语言 > 详细

Python 面向对象2

时间:2016-08-04 01:32:59      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:

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()

 

Python 面向对象2

标签:

原文地址:http://www.cnblogs.com/python-study/p/5735128.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!