Python学习笔记--类和对象
2016-03-18 17:30
585 查看
Python是解释性语言,但是它是面向对象的,能够进行对象编程
我们通过描述属性(特征)和行为来描述一个对象的。比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征。它会汪汪叫,会摇尾巴等是它的行为。
我们在描述一个真实对象(物体)时包括两个方面:
它可以做什么(行为)
它是什么样的(属性或特征)。
在python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method)
结论:对象=属性+方法
定义一个类
类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义:
注意类名后面有个冒号,在block块里面就可以定义属性和方法了。当一个类定义完之后,就产生了一个类对象。类对象支持两种操作:引用和实例化。引用操作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实例对象。比如定义了一个people类:
在类中我们可以定义一些静态属性,比如年龄:
定义了一个people类,里面定义了name和age属性,默认值分别为’jack’和12。在定义了类之后,就可以用来产生实例化对象了,这句p = people( )实例化了一个对象p,然后就可以通过p来读取属性了。这里的name和age都是公有的,可以直接在类外通过对象名访问,如果想定义成私有的,则需在前面加2个下划线 ’ __’。
在类中定义一些私有属性:
程序会报错,提示找不到这个属性,因为这是私有属性外面无法访问到,那么怎么访问这些私有属性呢,答案是方法。
类中的方法创建时必须有一个参数,一般定义为self也可以是其他,那么是不是可以定义其他参数呢?答案是可以的,例如:
私有方法通过动态方法访问
还有一个静态方法
call方法
类的继承
新式类
我们通过描述属性(特征)和行为来描述一个对象的。比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征。它会汪汪叫,会摇尾巴等是它的行为。
我们在描述一个真实对象(物体)时包括两个方面:
它可以做什么(行为)
它是什么样的(属性或特征)。
在python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method)
结论:对象=属性+方法
定义一个类
类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义:
class className: block
注意类名后面有个冒号,在block块里面就可以定义属性和方法了。当一个类定义完之后,就产生了一个类对象。类对象支持两种操作:引用和实例化。引用操作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实例对象。比如定义了一个people类:
class people: name = 'jack' #定义了一个静态属性 #定义了一个方法 def printName(self): print self.name
在类中我们可以定义一些静态属性,比如年龄:
class people: name = 'jack' age = 12 p = people() #创建p实例 print p.name,p.age 输出:jack 12 对象可以直接访问静态字段
定义了一个people类,里面定义了name和age属性,默认值分别为’jack’和12。在定义了类之后,就可以用来产生实例化对象了,这句p = people( )实例化了一个对象p,然后就可以通过p来读取属性了。这里的name和age都是公有的,可以直接在类外通过对象名访问,如果想定义成私有的,则需在前面加2个下划线 ’ __’。
在类中定义一些私有属性:
class people: __name = 'jack' __age = 12 p = people() #创建p实例 print p.name,p.age 输出:报错
程序会报错,提示找不到这个属性,因为这是私有属性外面无法访问到,那么怎么访问这些私有属性呢,答案是方法。
class people: __name = 'jack' __age = 12 def getname(self): return self.__name def getname(self): return self.__age p = people() #创建p实例 p.getName(),p.getAge() 输出:jack 12
类中的方法创建时必须有一个参数,一般定义为self也可以是其他,那么是不是可以定义其他参数呢?答案是可以的,例如:
#创建一个省份的类 class province: def __init__(self,name,capital,leader) self.Name = name self.Capital = capital self.Leader = leader #实例化一个省份 ah = province('安徽','合肥','飞飞') print ah.Name 输出:安徽
私有方法通过动态方法访问
#创建一个省份的类 class province: def __init__(self,name,capital,leader) self.Name = name self.Capital = capital self.Leader = leader #定义一个私有方法 def __siyou(self): print '私有方法' #动态方法访问私有方法 @property def get(self): self.__siyou() #实例化一个省份 ah = province('安徽','合肥','飞飞') ah.get() 输出:私有方法
还有一个静态方法
#创建一个省份的类 class province: def __init__(self,name,capital,leader) self.Name = name self.Capital = capital self.Leader = leader #定义一个静态方法 @staticmethod def foo(): print '静态方法' #实例化一个省份 ah = province('安徽','合肥','飞飞') ah.foo() 输出:静态方法
call方法
class foo: def __init__(self): pass def __del__(self): print '析构方法' def __call__(self): print 'call方法' f1 = foo() f1() #调用call方法 1、创建一个对象后,直接使用对象加括号的话则是访问类的call函数 2、del析构函数永远是最后一个执行的
类的继承
class father: def __init__(self): self.Fname = 'fff' def func(self): print 'father func' def bad(self): print 'bad' #son子类基础父类father class son(father): def __init__(self): self.Sname = 'sss' def bar(self): print 'son.bar' #继承父类里面的方法并修改 def bad(self): print 'good' s1 = son() #实例化类 s1.bar() #调用子类的方法 s1.func() #对象调用父类的方法 封装父类的方法 class father: def __init__(self): self.Fname = 'fff' def bad(self): print 'bad' #son子类基础父类father class son(father): def __init__(self): self.Sname = 'sss' #继承父类里面的方法并修改 def bad(self): father.bad(self) print 'good' s1 = son() #实例化类 显示的调用父类构造函数 class father(): def __init__(self): self.Fname = 'fff' print 'father.__init__' #son子类基础父类father class son(father): def __init__(self): self.Sname = 'sss' print 'son.__init__' #显示调用父类构造函数 fathe.__init__(self) s1 = son() #实例化类
新式类
class father(object): def __init__(self): self.Fname = 'fff' print 'father.__init__' #son子类基础父类father class son(father): def __init__(self): self.Sname = 'sss' print 'son.__init__' #显示调用父类构造函数 super(son,self).__init__() s1 = son() #实例化类
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法