zoukankan      html  css  js  c++  java
  • Python类总结-字段,方法,属性区别及StaticMethod, Property,私有字段和私有属性

    • 类包含下列
      • 静态属性
      • 动态属性
      • 静态方法
      • 动态方法
    class Province:
        #静态字段--属于类,调用方法类.字段名
        memo = "中国23个省之一"
    
        #动态字段--属于对象,调用方式实例化对象.字段名
        def __init__(self, name, capital, leader):
            self.Name = name
            self.Capital = capital
            self.Leader = leader
    
        #动态方法--属于对象
        def sports_game(self):
            print(self.Name + '正在开运动会')
    
        #静态方法--属于类
        @staticmethod
        def Foo(): #去掉self参数, 静态方法属于类
            print('每个省要带头反腐')
    
        @property #把方法变成一个特性
        def Bar(self):
            print(self.Name)
            return 'something'
    
    hb = Province('河北','石家庄','李阳') #hb = 类定义中self参数
    sd = Province('山东','济南','王盛辉')
    
    print(hb.Capital)
    print(hb.memo)         #动态的对象可以访问静态类的静态字段
    # print(Province.Name) #静态类不可以访问动态字段,name,capital,leader为动态字段
    print(Province.memo)
    
    hb.sports_game() #对象可以访问动态方法
    sd.sports_game()
    
    Province.Foo() #静态类可以访问静态方法
    hb.Foo()       #动态对象可以访问静态方法
    
    #访问特性
    hb.Bar #无需括号, 把方法访问形式转变为字段访问形式
    print(hb.Bar)
    
    >>>>>>>>>
    石家庄
    中国23个省之一
    中国23个省之一
    河北正在开运动会
    山东正在开运动会
    每个省要带头反腐
    每个省要带头反腐
    河北
    河北
    something
    
    

    私有字段,私有方法-- __变量名

    class Province:
        #静态字段--属于类,调用方法类.字段名
        memo = "中国23个省之一"
    
        #动态字段--属于对象,调用方式实例化对象.字段名
        def __init__(self, name, capital, leader,flag):
            self.Name = name
            self.Capital = capital
            self.Leader = leader
            #定义私有字段,__变量名
            self.__Thailand = flag
    
        #动态方法--属于对象
        def sports_game(self):
            print(self.Name + '正在开运动会')
    
        #静态方法--属于类
        @staticmethod
        def Foo(): #去掉self参数, 静态方法属于类
            print('每个省要带头反腐')
    
        @property #把方法变成一个特性
        def Bar(self):
            print(self.Name)
            return 'something'
    
        #间接调用私有变量
        def show(self):
            print(self.__Thailand)
    
        #构造一个Thailand函数,返回类中的私有变量__Thailand
        @property#构造函数
        def Thailand(self):
            return self.__Thailand
    
    
        #定义私有方法
        def __sha(self):
            print('我是Alex')
    
        #类中可以访问私有方法
        def Foo2(self):
            self.__sha()
    
    japan = Province('日本','济南','王盛辉',True)
    # print(japan.__Thailand) #出错,私有变量不可访问
    japan.show()
    japan.Foo2()
    print(japan.Thailand)
    japan._Province__sha() #可以通过_Province__sha()显式调用私有变量,但不建议
    
    >>> 
    True
    我是Alex
    True
    

    修改私有属性的方法-Setter

    
    class Province(object): #使用构造函数setter时候需要继承object
        #静态字段--属于类,调用方法类.字段名
        memo = "中国23个省之一"
    
        #动态字段--属于对象,调用方式实例化对象.字段名
        def __init__(self, name, capital, leader,flag):
            self.Name = name
            self.Capital = capital
            self.Leader = leader
            #定义私有字段,__变量名
            self.__Thailand = flag
    
        #动态方法--属于对象
        def sports_game(self):
            print(self.Name + '正在开运动会')
    
        #静态方法--属于类
        @staticmethod
        def Foo(): #去掉self参数, 静态方法属于类
            print('每个省要带头反腐')
    
        @property #把方法变成一个特性
        def Bar(self):
            print(self.Name)
            return 'something'
    
        #间接调用私有变量
        def show(self):
            print(self.__Thailand)
    
        #构造一个Thailand函数,返回类中的私有变量__Thailand
        @property#构造函数,只读
        def Thailand(self):
            return self.__Thailand
        #推荐修改私有变量的方法
        @Thailand.setter#构造函数, 可以修改@函数名.setter(self,传个值)
        def Thailand(self,value):
            self.__Thailand = value
    
        #定义私有方法
        def __sha(self):
            print('我是Alex')
    
        #类中可以访问私有方法
        def Foo2(self):
            self.__sha()
    
    japan = Province('日本','济南','王盛辉',True)
    print(japan.Thailand)
    japan.Thailand = False
    print(japan.Thailand)
    
  • 相关阅读:
    easy ui 表单ajax和from两种提交数据方法
    easy ui 下拉级联效果 ,下拉框绑定数据select控件
    easy ui 下拉框绑定数据select控件
    easy ui 异步上传文件,跨域
    easy ui 菜单和按钮(Menu and Button)
    HTTP 错误 404.3
    EXTJS4.2 后台管理菜单栏
    HTML 背景图片自适应
    easy ui 表单元素input控件后面加说明(红色)
    EXTJS 4.2 添加滚动条
  • 原文地址:https://www.cnblogs.com/konglinqingfeng/p/9668275.html
Copyright © 2011-2022 走看看