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)

原文地址:https://www.cnblogs.com/konglinqingfeng/p/9674006.html

时间: 2024-11-06 15:41:50

Python类总结-封装(Property)的相关文章

python 类的封装

封装:即在设计类时,刻意的将一些属性和方法隐藏在类的内部,这样将无法直接以"类对象.属性名"(或者"类对象.方法名(参数)")的形式调用这些属性(或方法),而只能用未隐藏的方法间接的操作这些隐藏的属性和方法. 封装机制保证了类内部数据结构的完整性,很好的避免了外部对内部数据的影响,提高了程序的可维护性. 避免用户对类中属性或方法进行不合理的操作. 提供代码的复用性. python类如何进行封装 不同于其他面向对象的编程语言,python类中的变量和函数不是共有的就是

Python——类的封装

1 class Gun: 2 def __init__(self, model): 3 4 # 1. 枪的型号 5 self.model = model 6 7 # 2. 子弹的数量 8 self.bullet_count = 0 9 10 def add_bullet(self, count): 11 12 self.bullet_count += count 13 14 def shoot(self): 15 16 # 1. 判断字弹的数量 17 if self.bullet_count <

LightMysql:为方便操作MySQL而封装的Python类

原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python操作MySQL数据库的一个常用包.但在使用过程中,我认为用起来还不够简便.为此,我在mysqldb的基础上封装了一个Python类LightMysql. 先来看如何使用 example.py #!/usr/bin/env python # -*- coding: utf-8 -*- from Lig

@property在python类中的应用

1.在类中,有时需要限制输入的内容,可以用一个set来输入需要的内容,用get来取得输入的内容 2.其实说白,上述所说的方法就是用来检查输入内容,让人们不能随心所欲的设置了. 参见下面的例子: 1 class Student(object): 2 def get_score(self): 3 return self.__score 4 def set_score(self, value): 5 if not isinstance(value, int): 6 raise ValueError("

python 旧类中使用property特性的方法

在python中,我们可以拦截对象的所有特性访问.通过这种拦截的思路,我们可以在旧式类中实现property方法. __getattribute__(self, name) #当特性name被访问时自动调用(只能在新式类中使用) __getattr__(self, name) #当特性name被访问且对象没有相应的特性时被自动调用 __setattr__(self, name, value) #当试图给特性name赋值时会被自动调用 __delattr__(self, name) #当试图删除特

python 描述符 上下文管理协议 类装饰器 property metaclass

1.描述符 #!/usr/bin/python env # coding=utf-8 # 数据描述符__get__ __set__ __delete__ ''' 描述符总结 描述符是可以实现大部分python类特性中的底层魔法,包括@classmethod,@staticmethd,@property甚至是__slots__属性 描述符是很多高级库和框架的重要工具之一,描述符通常是使用到装饰器或者元类的大型框架中的一个组件 注意事项: 一 描述符本身应该定义成新式类,被代理的类也应该是新式类 二

Python 类 类的封装,继承 ,多继承

__author__ = '12711'#-*- coding:utf-8 -*-# class Animal(object):# name='xxx'# def __init__(self,name,age):# self.name=name# self.age=age## def eat(self):# print("%s开始吃东西了"%(self.name))## def seelp(self):# print("%s开始睡觉了"%(self.name))##

Python 基础之面向对象初识与类的封装

一: 面向对象类的初识#(1) 类的定义#三种方式:#1.class MyClass:    pass #2.推荐class MyClass():    pass #3.class MyClass(object):    pass#(2) 类的实例化class MyClass():    pass#类的实例化,实例化对象obj = MyClass() #obj 就是一个对象#(3)类的基本结构只有成员方法和成员属性对象.属性  对象.方法()#例:class MyClass():    #成员属

第六章 Python类(面向对象编程)

什么是面向对象编程? 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.Python就是这种编程语言. 面向对象程序设计中的概念主要包括:对象.类.继承.动态绑定.封装.多态性.消息传递.方法. 1)对象:类的实体,比如一个人. 2)类:一个共享相同结构和行为的对象的集合.通俗的讲就是分类,比如人是一类,动物是一类. 3)继承:类之间的关系,比如猫狗是一类,他们都有四条腿,狗继承了这个四条腿,拥有了这个属性. 4)动态绑定:在不