python中如何创建类的对象,python类与对象-如何创建可管理的对象属性

如何创建可管理的对象属性

问题举例

在面向对象编程中, 我们把方法看作对象的接口,

直接访问对象的属性可能是不安全的,或设计上不够灵活。

但是使用调用方法在形式上不如访问属性简洁。

circle.get_radius()

circle.set_radius(5.0)  #繁琐

circle.radius

circle.radius = 5.0    #简洁

能否在形式上是属性访问,但实际上是内部调用方法?

解决思路

使用property函数为类创建可管理属性,fget/fset/fdel对应相应属性访问。

代码

import math

class Circle:

def __init__(self, radius):

self.radius = radius

def get_radius(self):

return round(self.radius, 1)

def set_radius(self, radius):

if not isinstance(radius, (int, float)):

raise TypeError('wronge type')

self.radius = radius

@property

def S(self):

return self.radius ** 2 * math.pi

@S.setter

def S(self, s):

self.radius = math.sqrt(s / math.pi)

R = property(get_radius, set_radius)

c = Circle(5.712)

c.S = 99.88

print(c.S)

print(c.R)

#print(c.get_radius())

#c.radius = '31.98

Greenplum+Hadoop学习笔记-14-定义数据库对象之创建与管理模式

6.3.创建与管理模式 概述:DB内组织对象的一种逻辑结构.一个DB内能够有多个模式.在未指定模式时默认放置在public中.能够通过"\dn"方式查看数据库中现有模式: test ...

Greenplum中定义数据库对象之创建与管理模式

创建与管理模式 概述:DB内组织对象的一种逻辑结构.一个DB内能够有多个模式.在未指定模式时默认放置在public中.能够通过"\dn"方式查看数据库中现有模式. testdw=# ...

python_如何创建可管理的对象属性

案例: 在面向对象编程中,我们把方法作为对象的接口,自己访问对象的属性可能是不安全的,或设计上不灵活,但是使用调用方法在形式上不如访问属性简洁 繁: circle.getRadius() circle ...

MySQL笔记(二)数据库对象的创建和管理

学校用 sqlserver ,记录数据移植到 mysql 过程中的一些问题(对应数据类型,主键外键等). 索引: 查看数据的物理路径 查看表相关的信息(SHOW CREATE TABLE.DESC) ...

python类的两种创建方式

参考: https://blog.csdn.net/likunkun__/article/details/81949479

图解JAVA对象的创建过程

前面几篇博文分别介绍了JAVA的Class文件格式.JVM的类加载机制和JVM的内存模型,这里就索性把java对象的创建过程一并说完,这样java对象的整个创建过程就基本上说明白了(当然你要有基础才能 ...

Java对象的创建、内存布局和访问定位

在Java运行时数据区中,我们知道了虚拟机内存的概况,本文介绍虚拟机内存中的数据的其它细节,如对象如何创建.如何布局以及如何访问. 基于实用的原则,这里以HotSpot虚拟机和常用的内存区域Java堆 ...

JavaScript(对象的创建模式)

JavaScript和其他语言略有不同,在JavaScript中,引用数据类型都是对象(包括函数).不过,在JavaScript中并没有“类”的概念,这决定了在JavaScript中不能直接来定义“类 ...

python类定义

在我的收藏中有一篇特别详细的类讲解 此处部分内容引自:http://blog.sina.com.cn/s/blog_59b6af690101bfem.html class myclass: 'this ...

随机推荐

Spark算子选择策略

摘要  1.使用reduceByKey/aggregateByKey替代groupByKey 2.使用mapPartitions替代普通map 3.使用foreachPartitions替代forea ...

关于awk的逗号问题

对于awk逗号的问题,我昨天看的一本书有提过: 挺好的书,大家可以看看~~~~ 测试过,总结如下(不知道总结有没有错,欢迎大家吐槽,欢迎大家吐槽,吐槽,吐槽... ...

SQL JOIN\SQL INNER JOIN 关键字\SQL LEFT JOIN 关键字\SQL RIGHT JOIN 关键字\SQL FULL JOIN 关键字

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表 ...

遥感影像滤波处理软件 — timesat3.2

最近因为要做遥感影像的滤波处理,经过女神推荐,决定用Timesat,可是该软件3.1版本只适合xp系统以及2011的matlab,后来在官网上找到了最新的3.2版本.支持64位操作系统以及2014的m ...

Shell编程基础教程6--shell函数

6.shell函数    6.1.定义函数        简介:            shell允许将一组命令集或语句形成一个可用块,这些块成为shell函数        定义函数的格式      ...

javascript的一点误解

var a=[]; for(var i = 0; i < 10; i++) { a[i] = function() { return i; } } console.log(a[9]()); co ...

moment&period;js

javascript日期处理类库,还有一个moment-timezone.js JavaScript时区处理类库 moment可以在browser和Node.js中使用. 安装: npm instal ...

安装VNC

一.安装相应桌面环境与vnc服务端和客户端: # yum groupinstall "GNOME Desktop Environment"(CentOS 5.x安装GNOME桌面环 ...

Spring 集成Junit单元测试

1.在pom增加junit和spring-test junit ...

利用backtrace和ucontex定位segment错误【转】

转自:https://blog.csdn.net/gqtcgq/article/details/53883546 C程序运行时,经常会碰到”segmentfault”错误.这是由于程序中非法访问内存导 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值