Python编程之面向对象
来源:互联网 发布:淘宝csv数据包制作 编辑:程序博客网 时间:2024/05/16 00:27
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数
在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。
给对象发消息实际上就是调用对象对应的关联函数,我们称之为对象的方法(Method)。
面向对象的抽象程度又比函数要高,因为一个Class既包含数据,又包含操作数据的方法
一、类和实例
class Student(object): pass
bart = Student()
可以自由地给一个实例变量绑定属性,比如,给实例bart
绑定一个name
属性:
>>> bart.name = 'Bart Simpson'>>> bart.name'Bart Simpson
class Student(object): def __init__(self, name, score): #相当于构造方法,第一个参数永远是self
,表示创建的实例本身 self.name = name self.score = score
二、访问限制在Python中,实例的变量名如果以__(两个)
开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
class Student(object): def __init__(self, name, score): self.__name = name self.__score = score def print_score(self): print '%s: %s' % (self.__name, self.__score)
改完后,对于外部代码来说,没什么变动,但是已经无法从外部访问实例变量.__name
和实例变量.__score
了:在Python中,变量名类似__xxx__
的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用__name__
、__score__
这样的变量名。
能直接访问__name
是因为Python解释器对外把__name
变量改成了_Student__name
,所以,仍然可以通过_Student__name
来访问__name
变量:
>>> bart._Student__name'Bart Simpson'
三、继承与多态多态:当子类和父类都存在相同的class Animal(object): def run(self): print 'Animal is running...'
class Dog(Animal): def run(self): print 'Dog is running...'class Cat(Animal): def run(self): print 'Cat is running...
run()
方法时,我们说,子类的run()
覆盖了父类的run()
,在代码运行的时候,总是会调用子类的run()
继承关系中,如果一个实例的数据类型是某个子类,那它的数据类型也可以被看做是父类。但是,反过来就不行
>>> b = Animal()>>> isinstance(b, Dog)False
四、获取对象信息1、使用type()
>>> type(123)<type 'int'>>>> type('str')<type 'str'>>>> type(None)<type 'NoneType'>
>>> type(abs)<type 'builtin_function_or_method'>>>> type(a)<class '__main__.Animal'>
>>> import types>>> type('abc')==types.StringTypeTrue>>> type(u'abc')==types.UnicodeTypeTrue>>> type([])==types.ListTypeTrue>>> type(str)==types.TypeTypeTrue
2、使用isinstance()isinstance()
判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上
>>> isinstance(h, Animal)True
能用type()
判断的基本类型也可以用isinstance()
判断:
>>> isinstance('a', str)True>>> isinstance(u'a', unicode)True>>> isinstance('a', unicode)False
并且还可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode:
>>> isinstance('a', (str, unicode))True>>> isinstance(u'a', (str, unicode))True
阅读全文
1 0
- python之面向对象编程
- Python编程之面向对象
- python笔记之面向对象编程
- SimpleClass:Python之面向对象编程
- [Python]面向对象编程之代理(Delegation)
- python之面向对象高级编程
- [学习笔记]python之面向对象编程
- python之面向对象编程基础
- Python基础之五面向对象编程
- Python学习之面向对象编程
- 《简明Python教程》之面向对象编程
- Python 之 基础面向对象编程
- Python 之 高级面向对象编程 slots
- Java转Python之面向对象编程
- python面向对象编程
- python 面向对象编程
- python面向对象编程
- python面向对象编程
- IO流和文件上传下载
- Qt图形视图框架(五) 变换
- UML 构件图(组件图)
- android运行时权限申请和处理
- Linux常用命令
- Python编程之面向对象
- 151. Reverse Words in a String
- <footer>始终在页面底部
- Android获取设备文件目录下权限
- 30天自制操作系统------命令行
- 去掉vue 中的代码规范检测(Eslint验证)
- Applying plugin configuration to rabbit@XXXX... failed.
- WebApp 移动web资源整理
- 设置android板子ip