zoukankan      html  css  js  c++  java
  • python

    一、在类中的普通字段静态字段

    class foo():
        c_name = 'cc'
        def __init__(self,content):
            self.content = content
        def show(self):
            print (self.content)
    print (foo.c_name)
    obj = foo('test content')
    obj.show()
    print (obj.c_name)
    # test content
    # cc
    # cc

      在这段代码中c_name就是类中的静态字段,而在实例化foo时,传递的'test content'就是普通字段。普通字段保存在对象,并且普通字段只能通过对象访问,普通字段是可以被修改的。静态字段保存类,可以通过类或对象来访问。

      静态字段是在类实例化之前就已经在内存中了,他是python解释器自上而下执行的时候就已经运行了c_name = 'cc'。

    二、在类中有三种方法

      1. 普通方法

        只能通过对象来调用。

        如果对象中需要保存一些值,同时在对象调用方法的时候需要用对象中的这些值,这时就用普通方法。

       2. 静态方法

        可以通过类或对象调用。

        静态方法就类似一个函数,不用通过创建对象直接调用。

        不需要任何对象的值,就要运行代码。则可以用静态方法。

      3. 类方法

        保存在类中,由类直接调用。cls是python自动传的。

        类方法和静态方法比较类似,但类方法可以使用类中的值。

    class foo():
        def __init__(self,content):
            self.content = content
            print ('__init__ method')
        def show(self):
            print (self.content)
        @staticmethod
        def sm(str1,str2):
            print (str1,str2)
    
    obj = foo('test content')
    obj.show()
    foo.sm('string1','string2')
    obj.sm('string3','sting4')

     三、类中成员的属性

      定义类中的属性方法。

    class foo():
        @property
        def pers(self):
            return 'pers'
        @pers.setter
        def pers(self,val):
            print (val)
        @pers.deleter
        def pers(self):
            print ('del pers')
    obj = foo()
    print (obj.pers)
    obj.pers = 'test_string'
    del obj.pers
    # pers
    # test_string
    # del pers

       属性的另外一种写法

    class bar():
        def b1(self):
            return 123
        def b2(self,val):
            print ('set is {}'.format(val))
        def b3(self):
            print ('del is True.')
        per = property(fget=b1,fset=b2,fdel=b3)
    obj_bar = bar()
    print (obj_bar.per)
    obj_bar.per = 'test_string'
    del obj_bar.per
    # 123
    # set is test_string
    # del is True

     

  • 相关阅读:
    ceph 网络配置
    Centos7.2 下DNS+NamedManager高可用部署方案完整记录
    Mysql多实例数据库
    Mysql 基础
    搭建本地YUM仓库
    Go实现线程安全的缓存
    KubeEdge安装详细教程
    Kubeedge实现原理
    Go语言中new()和make()的区别
    Go语言中append()函数的源码实现在哪里?
  • 原文地址:https://www.cnblogs.com/qikang/p/8684826.html
Copyright © 2011-2022 走看看