zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    HDU 1025 Constructing Roads In JGShining's Kingdom (DP+二分)
    HDU 1158 Employment Planning
    HDU 2059 龟兔赛跑
    Csharp 简单操作Word模板文件
    Csharp windowform datagridview Clipboard TO EXCEL OR FROM EXCEL DATA 保存datagridview所有數據
    Csharp 讀寫文件內容搜索自動彈出 AutoCompleteMode
    Csharp windowform controls clear
    CSS DIV大图片右上角叠加小图片
    Csharp DataGridView自定义添加DateTimePicker控件日期列
    Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  • 原文地址:https://www.cnblogs.com/python-study/p/5735128.html
Copyright © 2011-2022 走看看