python面向对象编程
来源:互联网 发布:java 小游戏源代码 编辑:程序博客网 时间:2024/06/06 03:37
##############面向对象编程################
一 编程范式
•面向对象编程——Object Oriented Programming,简称 OOP,把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
•面向过程把函数继续切分为子函数,来降低系统的复杂度。
二 基础概念
• 类:在 Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)。
• OOP首选思考的不是程序的执行流程,而是某个数据类型应该被视为一个对象,这个对象拥有的属性(Property)。
• 方法:给对象发消息实际上就是调用对象对应的关联函数,我们称之为对象的方法(Method)。
三 类
class Animals(object): ###定义类,object顶级类
def __init__(self,name,age): ###构造函数,后面跟你要传递的参数
self.name = name
self.age = age
def eating(self): ####方法,与函数唯一的区别是self
print "%s is eating....." %self.name
def drink(self):
print "%s is drinking....." %self.name
fentiao = Animals('fentiao',5) ######实例化
fentiao.eating()
fentiao.drink()
• Class 是一种抽象概念,比如我们定义的 Class——Animals,是指动物这个概念;
• 实例()则是一个个具体的 Animals;
• 面向对象的抽象程度又比函数要高,因为一个 Class 既包含数据,又包含操作数据的方法。
• object表示该类是从哪个类继承下来的。通常,如果没有合适的继承类,就使用 object 类,这是所有类最终都会继承的类。
• 创建实例的方式:fentiao = Animals('fentiao',5)
• 可以自由地给实例变量绑定属性,fentiao.name fentaio.age
•可定义一个特殊的 __init__方法,在创建实例的时候,就把name , age等属性绑上去
• __init__ 方法的第一个参数永远是 self ,表示创建的实例本身;
• 在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且调用时,不用传递该参数。
四 数据封装
• 数据和逻辑被“封装”起来了,调用很容易,但却不用知道内部实现的细节。
• 封装的另一个好处是可以给类增加新的方法;
class Animals(object): # 定义类
cn = 'china' #类变量
def__init__(self,name,age,gender): #构造函数,后面跟你要传递的参数,实例过程中执行的操作
self.name = name # self就是实例化的变量名,self.name是实例化属性,静态属性
self.age = age
self.__gender = gender #以双下划线开头的变量名,称为私有变量或属性
def eating(self): #方法,与函数唯一的区别是self,动态属性
print '%s iseating.....'%self.name
def drink(self):
print '%s is drinking......'%self.name
def get_gender(self):
self.__hello()
return self.__gender
def __hello(self): # 私有方法
print 'hello.....'
class Cat(Animals):
pass
fentiao = Animals("fentiao",5,'male')
fentiao.__hello()
五 访问限制
• 在 Python中,实例的变量名如果以 __ 开头,就变成了一个私有变量(private);
• 双下划线开头的实例变量是不是一定不能从外部访问呢?NO
六 继承和多态
class Animal(object):
def run(self):
print 'Animal is running...'
class Dog(Animal):
pass
class Cat(Animal):
pass
• 对于 Dog来说,Animal就是它的父类,对于 Animal 来说,Dog就是它
的子类;
• 继承最大的好处是子类获得了父类的全部功能。
•继承的另一个好处:多态。子类的覆盖了父类的方法。
七 获取对象信息
• 使用 type();
• 使用 isinstance();
• 使用 dir()
class Animals(object):
def__init__(self,name,age,gender):
self.name = name
self.age = age
self.__gender = gender
def eating(self):
print "%s is eating....." %self.name
def drink(self):
print "%s is drinking....." %self.name
def get_gender(self):
return "%s is %s ....."%(self.name,self.__gender)
fentiao = Animals('fentiao',5,'male')
print fentiao._Animals__gender
fentiao.__gender = 'female'
print fentiao.__gender
class Animals(object):
def __init__(self,name,age,):
self.name = name
self.age = age
def eating(self):
print "%s is eating....." %self.name
def drink(self):
print "%s is drinking....." %self.name
class Cat(Animals):
def eating(self):
print "%s is eating fish....." %self.name
class Dog(Animals):
def eating(self):
print "%s is eating gutou....." %self.name
a1=Animals('animals1',2)
a1.eating()
a1.drink()
c1=Cat('cat1',5)
c1.drink()
c1.eating()
d1=Dog('dog1',4)
d1.eating()
d1.drink()
class Animals(object):
def __init__(self,name,age,):
self.name = name
self.age = age
def eating(self):
print "%s is eating....." %self.name
def drink(self):
print "%s is drinking....." %self.name
def __del__(self): # 数据库断开
print "that's all,gameover"
class Realtion(object):
def make_friend(self,obj):
print "%s is %s friend"%(self.name,obj.name)
class Cat(Animals,Realtion):
def __init__(self,name,age,color):
Animals.__init__(self,name,age)
self.color = color
def eating(self):
print "%s is eating fish....." %(self.name)
def info(self):
print """
cat info
name:%s
age:%d
color:%s
"""%(self.name,self.age,self.color)
class Dog(Animals,Realtion):
def eating(self):
print "%s is eating gutou....." %(self.name)
c1 = Cat('tangmu',5,'black')
d2 = Dog('jieke',3)
c1.make_friend(d2)
class Animals(object):
def __init__(self,name,age,):
self.name = name
self.age = age
def eating(self):
print "%s is eating....." %self.name
def drink(self):
print "%s is drinking....." %self.name
class Cat(Animals):
def__init__(self,name,age,color):
Animals.__init__(self,name,age)
self.color = color
def eating(self):
print "%s is eating fish....." %(self.name)
def info(self):
print """
cat info
name:%s
age:%d
color:%s
"""%(self.name,self.age,self.color)
c1 = Cat('cat1',5,'black')
c1.info()
- python面向对象编程
- python 面向对象编程
- python面向对象编程
- python面向对象编程
- Python 面向对象编程
- Python面向对象编程
- Python 面向对象编程
- python--面向对象编程
- python面向对象编程
- python 面向对象编程
- Python:面向对象编程
- python面向对象编程
- Python面向对象编程
- python面向对象编程
- Python面向对象编程
- python 面向对象编程
- python 面向对象编程
- PYTHON 面向对象编程
- android 常用控件(一)
- 剑指offer--不用加减乘除做加法
- PowerShell命令行,卸载WIN10自带应用
- 【HDU 2647】Reward (邻接表实现拓扑排序,反向排序)
- Spring Boot 学习笔记(-)
- python面向对象编程
- Eclipse 上传项目至github
- kernel的属性文件到android的java的读取(7 14)
- python编程技巧之从字典中提取子集
- 如何完全屏蔽Chrome的提示:"请停用以开发者模式运行的扩展程序"
- C++ Vector用法介绍
- JavaSE_笔试题_单选选择题1
- 数据结构 队列以及Java代码实现
- 一个Redis消息队列实现