python中private函数,python private方法

  python中private函数,python private方法

  Python中之所以给方法,属性进行私有化,一是为了封装性。二是为了程序的安全性。python中可以使用__定义私有属性,私有属性类外和子类都不能直接操作访问,但是实际开发中私有属性也不是一层不变的。所以要给私有属性提供外部能够操作的方法。

  1.1 .属性属性 property的用法其实就是在方法上应用装饰器,在方法上面添加 @property的方式。具体啥事装饰器后面介绍。实现功能就是在类中定义值为property对象的类属性,换句话说就是可以将方法封装成类属性,用调用类属性的方式进行调用方法,而且property本身也带有方法。的定义和使用

  2.property对类的私有属性进行操作,类似java中的getter/setter一般是为了程序安全而封装的。python中会有一些私有属性不能直接访问。所以如果此时操作他,就需要类提供相应的getter/setter方法。

  2.1.通过自定义get,set方法,调用方法的形式去对私有属性进行操作

  #1.通过自定义get、set方法和调用方法对私有属性进行操作。类人(对象):def _ _ init _ _(本人,姓名,年龄):本人。name=nameself。_ _ age=age #定义私有属性的get方法,获取私有属性def get age (self):返回self。_ _ age #定义重新分配私有属性的set方法,重置私有属性def set age (self,age): self。_ _ age=ageperson1=person (Tom ,19)person 1 . setage(20)print(person 1 . name,person 1 . getage())# Tom 202.通过调用property属性对set,get方法进行了封装。然后操作私有属性

  #2.通过调用property属性来封装set,get方法。然后操作私有属性类student(object):def _ _ init _ _(self,name,age): self.name=name self。_ _ age=age #要为私有属性定义get方法,获取私有属性def getAge (self): return self。_ _ age #定义重新分配私有属性的set方法,重置私有属性def set age (self,age): self。_ _ age=age p=property (get age,set age) #注意里面get age,set age不能带()s1=Student(jack ,22)s1.p=23 #如果用=会判断为赋值,调用SetAge方法。Print(s1.name,S1 . p)#插孔23。如果直接用s1.p,会自动判断是否取值。调用GetAgePrint (s1.name,s1.getAge ()) # jack23。此时,set和get方法可以单独使用。尖叫提示:property方法中有个四个参数

  第一个参数是方法名,当对象。属性被调用;对应下面getter方法的第二个参数是方法名;当物体。property=XXX被调用,下面setter方法对应的第三个参数是方法名;当德尔提出异议时。属性时,会自动触发执行方法;而下面deleter方法对应的第四个参数是string,它调用对象。财产。__doc__,它

  #3.以上两个还是太麻烦了。只需用property标记同名函数的形式即可。这是最后开发中常用的方法。class teacher(object):def _ _ init _ _(自我,姓名,年龄,说话):self.name=nameself。_ _年龄=年龄本身。_ _ speak=speak @ property #注1。@proterty下面默认跟get方法,设置了会报错。Def age(自我):回归自我。_ _ age @ age.setter #注2。下面是上面的函数名。使用了setter,而不是property.setter. def age(self,age):如果年龄150,年龄=0: #还可以添加判断条件print(年龄输入有误)else: self。_ _ age=age @ property def for _ speak(self):#注2。同名的这个函数的名字可以自定义,一般默认使用属性名。返回。_ _ speak @ for _ speak . setter def for _ speak(self,speak): self。_ _ speak=speakt1=老师( herry ,45,中国人)t1.age=38 #注4。一旦有了property,直接用t1.age t1 . for _ speak= English print(t1 . name,t1 . age,T1.for_speak) #herry 38英语尖叫提示:3.直接使用property标注同名函数的形式。这是最终开发中常用的方法。0.@property成为属性函数,可以对属性赋值时做必要的检查,比如在setter方法里加过滤判断条件。此外相比自定义的get和set方法,property保证了代码的短小精悍,对私有属性的操作代码格式化模块化。@property只有一个参数self,且要有返回值,所以一般定义属性的get方法。注意@property调用方式,没有括号,而是直接调用属性名即可。3.property对方法的使用@property 装饰方法时,可以将方法当成类的属性的形式进行调用,操作方法如果操作实例属性一样。# coding=UTF-8 # # # # # # # # # # # # # class goods: Python 3中默认继承的object类当value):print( @ price.setter )@ price.deleterdef price(self):print( @ price . deleter )# # # # # # # # # # # #调用# # # # # # # # # property,自动执行由@property修饰的price方法并获取方法obj.price=123 #@price.setter的返回值,自动执行由@ price . setter修饰的price方法,将123赋给方法的参数del obj.price #@price.deleter,自动执行由@ price . deleter修饰的price方法,注意这里的执行方式。 Delobj.price叫嚣:经典类中访问属性的方法只有一个,它对应的被@property修改的方法。有三种方法可以访问新类中的属性,三种方法分别由@property、@ methodname.setter和@ methodname.deleterr修改。因为有三种方法可以访问新类,所以我们可以根据它们的访问特征,将三种方法定义为同一个属性:get、modify和delete。

  class goods(object):def _ _ init _ _(self):#原价self.original_price=100 #折扣self。折扣=0.8 @ propertydef价格(self): #实际价格=原价*折扣new _ price=self . original _ price * self . Discount return new _ price @ price . setter def价格(self,Value): self。original _ price=value #修改原类属性original_price @price.deleter #注意,这个deleter修饰符生效的前提是del删除方法体中的属性,属性才会真正被删除。DEF (self): Delself。Original _ price #这是删除属性的实际操作。Obj=Goods()print(obj.price) #获取商品价格,80obj.price=200 #修改商品原价,160 print(obj . price)# 160 print(obj . original_price)# 200 delobj . price #删除商品原价,此处为original _ price属性。print(obj . price)# attribute error: goods 对象没有属性 original _ price 统一声明:关于博客原创内容,部分内容可能引用了互联网,如果有原创链接,将声明引用;如果找不到原文链接,如有侵权请联系删除。关于转载博客,如有原创链接,会做声明;如果找不到原文链接,如有侵权请联系删除。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: