Python类总结-封装(Property)
Posted konglinqingfeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python类总结-封装(Property)相关的知识,希望对你有一定的参考价值。
Property
#property
#内置装饰器函数,只在面向对象中使用
from math import pi
class Circle:
def __init__(self,r ):
self.r = r
@property
def perimeter(self):#property属性不能传递任何参数
return 2*pi*self.r
@property
def area(self):
return self.r**2*pi
c1 = Circle(5)
# print(c1.area()) #不加property目前定义的是个方法,圆的面积应该是属性,故用@property装饰
print(c1.perimeter) #调用不用加()
print(c1.area)
利用Setter修改Property装饰的变量
class Person:
def __init__(self, name):
self.__name = name
@property
def name(self):
return self.__name + 'sb'
@name.setter #定义一个方法.setter,必须和property装饰同名的方法
def name(self,new_name):
self.__name = new_name
#实现了property装饰的变量的修改操作
tiger = Person('泰哥')
print(tiger.name)
tiger.name = '全部'
print(tiger.name)
>>>>
泰哥sb
全部sb
- Property的实际应用场景 --某个属性需要经过一些计算或操作而得出的结果,通常定义为一个方法然后用Property装饰
class Goods:
discount = 0.5
def __init__(self,name, price):
self.name = name
self.__price = price #折扣前价格定义为私有的
@property
def price(self): #折扣后的价格定义为一个方法并用property装饰,进行一些操作
return self.__price*Goods.discount
apple = Goods('苹果', 5)
print(apple.price)
以上是关于Python类总结-封装(Property)的主要内容,如果未能解决你的问题,请参考以下文章
4月16日 python学习总结 封装之property多态 classmethod和staticmethod
解决报错:在Python中使用property装饰器时,出现错误:TypeError: descriptor ‘setter‘ requires a ‘property‘ object but(代码片
python学习8_1 面向对象(继承多态封装)以及零散概念(组合,property,绑定方法与非绑定方法,反射,内置函数)