(十)Python中级知识-面向对象之类

1、概要

面向对象(Object Oriented,简称OO)思想在Java及其他编程语言中使用非常广泛,面向对象的思想也来自于生活中的灵感,很多现实世界的物体或聚合体我们都可以对其进行抽象化归纳,抽象思维是一种思想活动,依靠想象力和对事物的特征的通用特性进行整理,最终形成一个或一类的具化对象。如:人,我们可以理解为一种抽象的集合,具有名字、头、身、手、脚、能直立行走、可以使用工具、具备自主意识、等一些列特征,我们可以将这一系列公共特征组合在一起看成一个对象,即:人。

其中人这个对象,在编程语言中我们需要将这个对象表示出来,也就是我们说的类(Class),在类中,我们可以将名字等看作是类的属性,将直立行走等行为看作是类的方法。

引入这种面向对象的思想之后,我们可对现实世界中繁多的物体进行类化映射到程序世界里面,结合一些设计原则和设计模式,我们就可以构建更为复杂和庞大的程序,同时也更易于维护和扩展,当有了类之后,仿佛一切都有了规则和秩序。

本博主将按照Java语言的面向对象的特性,去学习Python语言的面向对象知识。
其中面向对象最重要的三个特征:封装、继承、多态。将围绕这三个特征切入学习。

在学习之前我们需要了解一些基本的知识,那么如如何定义类、如何使用类实例、如何调用类属性和方法?

2、创建一个类

类的基本组成单元:属性和方法。
类的语法格式如下:

class 类名:
    # 属性
    # 方法()

举个例子:
创建People类,此类包含两个属性,和两个方法。

# 定义对象为人的类
class People:
    # 类的属性(可以是公共、也可以是私有的)
    # 公有属性,能在本类之外调用
    name = ""
    # 私有属性,不能在本类之外调用
    __privacy = ""

    # 类的默认构造函数
    def __init__(self):
        print("调用默认构造函数")

    # 自定义构造函数
    # def __init__(self, name):
    #     self.name = name
    #     print(self.name + "调用自定义的构造函数")

    # 类的公有方法,无外部参数
    def walk(self):
        print("直立行走")

    # 类的私有方法,有外部参数
    def do(self, someThing):
        print(self.name + someThing)

类的属性分为:公有和私有两类。
  • 公有属性:可在其他类中访问, 属性名前没有两根下划线__。如上例子中的:name
  • 私有属性:不可在其他类中访问,属性名前有两根下划线__。如上例中的:__privacy
类的方法也分为:公有和私有两类。
  • 公有方法:可在其他类中访问, 方法名前没有两根下划线__。如上例子中的:do
  • 私有方法:不可在其他类中访问,方法名前有两根下划线__。如上例中的:__walk
提炼一下类的方法的语法格式:
def 方法名称(self,参数1,参数2,参数3,...参数n):
        #方法体

注意:类中的方法,第一个参数需要指定为self,这个是python约定的,且在调用该公共方法时,这个self对应的参数是不需要传入的,只需要传入,参数1,参数2,参数3,…参数n即可。

构造函数:

上面例子中的__init__即为类默认的构造函数,其中构造函数可以自定义,使用自定义构造函数之后,默认构造函数不再生效。构造函数执行顺序和java是一致的,类实例化的时候调用。

很诡异的地方是,自定义构造函数之后,默认构造函数不在生效了。

补充一点:静态方法,在方法名上方添加这个注解@staticmethod即可。

3、使用这个类

先导入类,然后创建类的实例,然后通过类的实例调用公共属性和公共方法。

# 导入类
from People import People

# 自定义构造函数
# people2 = People("成年人")
# 创建类的实例
people = People()

# 调用类的公共属性和方法
people.name = "成年人"
people.do('只看利弊')

people.name = "小孩子"
people.do('才分对错')

输出结果:
调用默认构造函数
成年人只看利弊
小孩子才分对错

4、总结

私有属性或方法都有两个下划线开头__;
创建实例通过:类名(),与java相比没有new 关键字;
Python类的用法上与Java非常类似。
其中我们看到 self 关键字,在类中定义一个私有或者公有的方法,需要指定第一个参数为self,self指类本身,类似java的this关键字,其中self这个参数名是可以修改的,如改成self2,self3等,但不建议这么做,因为Python一般都约定为此参数名为self。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值