python的对象和方法_Python类和方法_特性与输出对象

例如,在 Time1.py 里面,类的定义和后面的函数定义就没有明显的联系。测试一下就会发现,每一个后续的函数里面都至少用了一个 Time 对象作为参数。

通过分析这些过程,我们可以使用一种特殊的函数,即方法;它是某一特定的类所附带的函数。比如字符串、列表、字典以及元组的一些方法。

其实,方法在语义上与函数是完全相同的,但在语法上有两点不同:

1.方法要定义在一个类定义的内部,这样能保证方法和类之间的关系明确。

2.调用一个方法的语法与调用函数的语法是不一样的。

二,输出对象

1.之前我们定义过一个名为Time 的类,当时写过名为 print_time 的函数:

>>> class Time:

... """Represents the time of day."""

...

>>> def print_time(time):

... print('%.2d:%.2d:%.2d' % (time.hour, time.minute, time.second))

...

要调用这个函数print_time,就必须给传递过去一个Time 对象作为参数:

>>> start = Time()

>>> start.hour = 9

>>> start.minute = 45

>>> start.second = 00

>>> print_time(start)

09:45:00

2.如果要让 print_time 成为一个方法,只需要把函数定义内容放到类定义里面去。

>>> class Time:

... def print_time(time):

... print('%.2d:%.2d:%.2d' % (time.hour, time.minute, time.second))

...

现在就有两种方法来调用 print_time 这个函数了:

第1种,用函数的语法:

>>> Time.print_time(start)

09:45:00

上面这里用到了点号,Time 是类的名字,print_time 是方法的名字,start 就是传过去的一个参数了。

第2种,用方法的语法:

>>> start.print_time()

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'Time' object has no attribute 'print_time'

这里报错对象没有属性,必须再次传递Time 对象作为参数:

>>> start = Time()

>>> start.hour = 9

>>> start.minute = 45

>>> start.second = 00

>>> start.print_time()

09:45:00

这里也用了点号,print_time 依然还是方法名字,然后 start 是调用方法所在的对象,也叫做主语。这里就如同句子中的主语一样,方法调用的主语就是方法的归属者。

在方法内部,主语被用作第一个参数,所以在上面的例子中,start 就被赋值给了参数time。

3.按照惯例,方法的第一个参数也叫做 self,所以刚刚的 print_time 函数可以按照如下这种更为通用的形式来写:

>>> class Time:

... def print_time(self):

... print('%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second))

...

这种改写的更深层次意义:

*函数调用的语法里面,print_time(start)表明了函数是主动的。就相当于说【嘿,print_time 函数!,给你一个对象叫start,你来打印输出一下。】

* 而在面向对象的编程中,对象是主动的。方法的调用,比如 start.print_time(),就像是说【嘿,start,你打印输出一下你自己吧】

从目前的例子里面,这样改写还没有造成什么明显的区别。但是有的时候,从函数转为对象,能够让函数(或者方法)更加通用,也让程序更容易维护,还便于代码的重用。

结束。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值