码迷,mamicode.com
首页 > 编程语言 > 详细

python 类

时间:2016-08-16 22:00:22      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

python 类和实例


1、添加访问限制
def __init__(self, name, score):
self.__name = name
self.__score = score
外部访问和修改使用函数
__name变为私有变量,无法从外部直接访问和修改,Python解释器对外把__name变量改成了_Student__name或其他名字。

判断是否是某个类型 isinstance(a,list)

2、类的继承和多态
多态,父类子类 鸭子类型

3、对象类型
type() 可以判断两个对象类型是否相同
isinstance([1,2,3],(list,tuple))

3、实例属性和对属性
class Student(object):
def __init__(self, name):
self.name = name #self变量,实例属性

name = ‘Student‘ #类属性

实例属性和类属性尽量避免使用相同的名字,当实例的name属性没找到时,返回类属性。

4、使用__slots__
正常情况下,可以给实例绑定属性和方法,在类没有定义的情况下。
但一般来讲属性和方法直接定义在类中。
限制实例的属性绑定
class Student(object):
__slots__ = (‘name‘, ‘age‘) #只能绑定name和age
注:只对当前类有效,对子类无效

5、多重继承
Mixin

6、定制类
__str__ 用于打印,用户看到 s=Student() print(s)
__repr__ 用于调试 s
__iter__ __next__ 用于循环调用
__getitem__ 按下标取元素
__getattr__(self,name) 对类不存在的属性进行处理 应用SDK
__call__ 可以调用 s=Student() s()

7、枚举类
from enum import Enum

Month = Enum(‘Month‘, (‘Jan‘, ‘Feb‘, ‘Mar‘, ‘Apr‘, ‘May‘, ‘Jun‘, ‘Jul‘, ‘Aug‘, ‘Sep‘, ‘Oct‘, ‘Nov‘, ‘Dec‘))

for name, member in Month.__members__.items():
print(name, ‘=>‘, member, ‘,‘, member.value)

value属性则是自动赋给成员的int常量,默认从1开始计数。

8、使用元类
type()支持动态创建类
元类Metaclass

python 类

标签:

原文地址:http://www.cnblogs.com/hb91/p/5777936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!