• python-面向对象2


    字段、方法、属性

     1 #静态字段与普通字段
     2 class Foo:
     3     #静态字段
     4     contry = '中国'
     5     def __init__(self,name):
     6         #普通字段
     7         self.name = name
     8 
     9 #普通字段的调用需要对象调用,需要实例化对象
    10 hn = Foo('河南')
    11 print(hn.name)
    12 >>>河南
    13 hb = Foo('河北')
    14 >>>河北
    15 #静态字段由类调用,不用实例化对象,python中静态字段 对象与类都能访问类中的静态字段,一般情况下不适用对象调用静态字段
    16 print(Foo.contry) 17 >>>中国
    #补充静态字段,代码加载的时候已经创建,普通字段实例化对象时调用
    #构造方法,静态方法,普通方法,类方法
    class Foo:
        #构造方法
        def __init__(self,name):
            self.name = name
    
        # 普通方法,由对象去调用,属于类
        def show(self):
            print(self.name)
    
        #静态方法,属于类,不能被对象调用,用类调用
        # 静态方法的使用,类中的方法不调用对象时,使用静态方法,与函数相同
        @staticmethod
        def f1(args):
            print(args)
    
        @classmethod
        def f2(cls):
            ret = cls('alex')
            ret.show()
    #普通方法使用对象效用
    obj = Foo('liguangxu')
    obj.show()
    >>>liguangxu
    #静态方法使用类调用
    Foo.f1('abc')
    >>>abc
    #类方法使用类调用,默认把类名当参数传入,(必须有)可在类中初始化对象。
    Foo.f2()
    >>>alex
     1 class Foo:
     2     def __init__(self,all_count):
     3         self.all_count = all_count
     4 
     5     #属性,拥有字段功能的方法
     6     @property
     7     def all_pager(self):
     8         a1,a2 = divmod(self.all_count,10)
     9         if a2 == 0:
    10             return a1
    11         else:
    12             return a1+1
    13     #属性的修改 
    14     @all_pager.setter
    15     def all_pager(self,value):
    16         print(value)
    17     #属性的删除
    18     @all_pager.deleter
    19     def all_pager(self):
    20         print('del all_pager')
    21         
    22 p = Foo(101)
    23 #方法的调用需要用对象.方法名()
    24 #属性的调用要用对象.属性
    25 print(p.all_pager)
    26 #>>>11
    27 #字段拥有修改的功能,属性也有
    28 #属性的修改
    29 p.all_pager = 111
    30 #>>>111
    31 del p.all_pager
    32 #>>>def all_pager
     1 #属性的另一种表现形式
     2 class Pager:
     3     def __init__(self, all_count):
     4         self.all_count = all_count
     5 
     6     def f1(self):
     7         return 123
     8 
     9     def f2(self):
    10         pass
    11     def f3(self):
    12         pass
    13 
    14     foo = property(fget = f1,fset = f2,fdel =f3)
    15 
    16 p = Pager(101)
    17 
    18 result =p.foo#调用属性,默认执行第一个参数的函数
    19 print(result)
    20 
    21 p.foo = 'alex'#修改属性值,默认执行第二个参数fset
    22 
    23 del p.foo#删除属性,指定第三个参数的函数
  • 相关阅读:
    细说java平台日志组件
    linux远程执行命令
    linux命令 common 文件比较
    Linux Shell脚本编程--cut命令
    linux sort命令
    shell中if判断一个变量为空
    linux shell if参数
    wc命令
    date 命令
    let 与 expr Shell运算比较 let强强胜出
  • 原文地址:https://www.cnblogs.com/liguangxu/p/5625103.html
Copyright © 2020-2023  润新知