python面向对象编程

##############面向对象编程################


一 编程范式

面向对象编程——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()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值