Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9413199
  • 博文数量: 1748
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20070
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1748)

文章存档

2024年(24)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Windows平台

2018-01-10 13:39:27

自定义类:
点击(此处)折叠或打开
  1. class classname:
  2.    suite

  3. class classname(base_classes):
  4.    suite
最基类为 object, 其包含 __new__  __init__  __eq__  __repr__  __str__ 等方法属性, 自定义类的特殊方法的第一个参数必须是 self, 代表对象自身的引用. 
对象的创建过程: 在 python中, 首先用 __new__ 创建对象, 然后用 __init__ 对齐初始化. 实际过程中一般都会实习 __init__() 方法.  对所有的比较操作符, python 都提供了特殊方法, 例如实现 __lt__() 代表对 x < y 的操作.  调用父类的方法可以使用 super.__lt__().

默认情况下, 自定义类的==总是返回 False, 除非重新实现 __eq__()
默认自定义类是可哈希运算的, 也可以作为dict的键或存储在集合中. 但如果定义了 __eq__(), 那么实例就不再是可哈希运算的.

isinstance(obj, class) : 返回 bool, 判断obj是否是一个类(或其基类)的对象


点击(此处)折叠或打开

  1. 把类的一个属性进行限定, 可以使用@property修饰符.
  2. property有getter, setter, deleter三个方法 和 一个 docstring说明

  3. 举例: 要在类内设置一个>0的参数 radius的方法

  4. @property
  5. def radius(self):   #先把radius设置为特性. 那么 radius就有 getter/setter/deleter属性.
  6.     '''
  7.        .... 说明与实例
  8.     '''
  9.     return self.__radius  #私有变量, 一般和特性同名

  10. @radius.setter
  11. def radius(self,radius):
  12.     assert radius > 0, "radius must be > 0"  #用 assert 保证特性的限定条件和异常的docstring
  13.     self.__radius = radius

    这样如果对类对象初始化或者其他方法对radius进行赋值时, 如果出现 <=0 的情况, 那么 AssertionError异常.


阅读(1600) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~