栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

实现python的静态成员 与 property()的理解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实现python的静态成员 与 property()的理解

实现python的静态成员 与 property()的理解

静态变量的声明与调用property()

静态变量的声明与调用

“静态”变量的声明
这里的静态变量是借用Java中静态变量的概念(不知道Python中的具体概念是什么),指既可以通过类名直接进行访问,也可以通过类的实例进行访问的变量。这种变量的声明很简单,直接在类代码块中设置变量即可,不需要任何关键字
Java中这样声明的变量是实例变量,只能通过对象实例进行访问
class Test:
#这是一个“静态”变量
className = “Test”

# 静态成员变量

class Apple(object):
    eaten_by = []
    
    def __init__(self):
        pass
    
    def eaten(self,str):
        print(f'{str} is eating')
        Apple.eaten_by.append(str)
        
apple1 = Apple()
apple2 = Apple()
apple3 = Apple()
apple1.eaten('Henry')
apple2.eaten('Tom')
apple2.eaten('Kristin')
del apple1 
del apple2
del apple3
print(Apple.eaten_by)    
property()

property()是装饰器的变型。设计它的主要初衷是为了防止外部直接调用类中的变量,破坏了封装性。因此计划让外界改变“中介变量”,也就是被赋值为property()的变量。他的get,set和del都会导致类内变量的改变,具体改变方式则通过传入property()的函数类型实参决定。同时把类内成员变量设为private,这样就可以限制外部随意调用类内成员变量啦。

# 测试property()的装饰器作用
# 测试property()对改善封装性的作用

# 通过一个隐藏的变量(property类型)作为中介实现类间消息传输,改变成员变量等等。

class Person():
    def __init__(self):
        self.__drive = False
        self.__car = ''
        self.__client_name = ''
        
    def setINFO_client(self,info):
        print('SET!!!')
        self.__car = info[0]
        self.__client_name = info[1]
        self.__drive = info[2]
        self.description()
    
    
    def getINFO_client(self):
        print('GET!!!')
        self.description()
        return self.__car,self.__client_name,self.__drive
    
    def description(self):
        if self.__drive == False:
            print('nobody drives you')
        else:
            print('client {} drives you with car of {}'.format(self.__client_name,self.__car))
    info = property(getINFO_client,setINFO_client)
    
p = Person()
p.info = ('Benz','Henry',True) 
print(p.info)
        
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号