python之面向对象编程(一)

面向对象编程的定义

面向对象编程的核心是对象,即某一可有属性、动作的复杂事物。面向对象编程优先考虑对象和需要达到的结果,不重点关注流程。

面向对象编程的优点是程序的可维护高和扩展性强,采用面向对象编程可以大幅提高团队开发效率,在需求变化快的场景面向对象编程应对需求变化更容易和方便。

面向对象编程的缺点是可控性差,无法精准预测问题的处理流程和结果。

面向对象编程常用名词

类:具有某些类似特征的一类事物(如动物、植物等),类是模板,是抽象概念。

对象(实例):具体的某一事物(如那只流浪猫、这只宠物狗),对象是具体的事物,是抽象概念的具现。

实例化:根据类创建具体对象的过程。

类的定义

class 类名(父类):
    '''说明文档'''
    类体

其中(父类)可缺省,缺省父类是object,可以把object理解为类的祖先。

class语句下一行三引号开头和三引号结束中的内容为类的说明文档。

说明文档下一行即为类的正式内容,即类体。

类体中主要内容有2种,一是属性、二是函数。

例如:

class Animal:
    kind = 'all animals'

    def eat(self):
        print('The animal is eating!')


print(Animal.kind)
Animal.eat(Animal)

out:
all animals
The animal is eating!

以上案例中kind是属性,eat是函数。

注意eat比较特殊,如果用类名.eat调用时它是函数,用对象.eat调用时它是方法。

实例化

类名加括号就是实例化,会自动触发__init__函数的运行,它会根据参数为每个实例定制自己的特征。

white_cat = Animal()
print(white_cat.kind)
white_cat.eat()

out:
all animals
The animal is eating!

注意:实例化时会找该类的__init__函数,若该类无此函数,那么会找它父类的__init__函数,父类若没有会继续向上找祖父类__init__函数,直至找到object类中的空__init__函数。

函数和方法的区别

学python时经常会有人搞不清楚函数和方法的区别。在此通过案例来搞清楚它们的区别。

from types import FunctionType, MethodType


class Animal:
    kind = 'all animals'

    def eat(self):
        print('The animal is eating!')

        
white_cat = Animal()
print(isinstance(Animal.eat, FunctionType))  # 判断Animal.eat是不是函数
print(isinstance(white_cat.eat, FunctionType))  # 判断white_cat.eat是不是函数
print(isinstance(Animal.eat, MethodType))  # 判断Animal.eat是不是方法
print(isinstance(white_cat.eat, MethodType))  # 判断white_cat.eat是不是方法

out:
True
False
False
True

通过以上案例得出结论:

类.变量名()调用时,该变量名是函数。

变量名()调用时,该变量名是函数。

实例.变量名()调用时,该变量名是方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值