自定义类:
点击(此处)折叠或打开
-
class classname:
-
suite
-
-
class classname(base_classes):
-
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是否是一个类(或其基类)的对象
-
把类的一个属性进行限定, 可以使用@property修饰符.
-
property有getter, setter, deleter三个方法 和 一个 docstring说明
-
-
举例: 要在类内设置一个>0的参数 radius的方法
-
-
@property
-
def radius(self): #先把radius设置为特性. 那么 radius就有 getter/setter/deleter属性.
-
'''
-
.... 说明与实例
-
'''
-
return self.__radius #私有变量, 一般和特性同名
-
-
@radius.setter
-
def radius(self,radius):
-
assert radius > 0, "radius must be > 0" #用 assert 保证特性的限定条件和异常的docstring
-
self.__radius = radius
这样如果对类对象初始化或者其他方法对radius进行赋值时, 如果出现 <=0 的情况, 那么 AssertionError异常.
阅读(1600) | 评论(0) | 转发(0) |