千锋教育-做有情怀、有良心、有品质的职业教育机构

Python之面向对象的进一步拓展

来源:千锋教育
发布时间:2023-11-07 00:38:59
分享

我们熟悉了对象和类的基本概念。我们将进一步拓展,以便能实际运用对象和类。

调用类的其它信息

上一讲中提到,在定义方法时,必须有self这一参数。这个参数表示某个对象。对象拥有类的所有性质,那么我们可以通过self,调用类属性。

classHuman(object):

laugh='hahahaha'

defshow_laugh(self):

printself.laugh

deflaugh_100th(self):

foriinrange(100):

self.show_laugh()li_lei=Human()li_lei.laugh_100th()

这里有一个类属性laugh。在方法show_laugh()中,通过self.laugh,调用了该属性的值。

还可以用相同的方式调用其它方法。方法show_laugh(),在方法laugh_100th中()被调用。

通过对象可以修改类属性值。但这是危险的。类属性被所有同一类及其子类的对象共享。类属性值的改变会影响所有的对象。

__init__()方法

__init__()是一个特殊方法(specialmethod)。Python有一些特殊方法。Python会特殊的对待它们。特殊方法的特点是名字前后有两个下划线。

如果你在类中定义了__init__()这个方法,创建对象时,Python会自动调用这个方法。这个过程也叫初始化。

classhappyBird(Bird):

def__init__(self,more_words):

print'Wearehappybirds.',more_words

summer=happyBird('Happy,Happy!')

这里继承了Bird类,它的定义见上一讲。

屏幕上打印:

Wearehappybirds.Happy,Happy!

我们看到,尽管我们只是创建了summer对象,但__init__()方法被自动调用了。最后一行的语句(summer=happyBird...)先创建了对象,然后执行:

summer.__init__(more_words)

'Happy,Happy!'被传递给了__init__()的参数more_words

对象的性质

我们讲到了许多属性,但这些属性是类的属性。所有属于该类的对象会共享这些属性。比如说,鸟都有羽毛,鸡都不会飞。

在一些情况下,我们定义对象的性质,用于记录该对象的特别信息。比如说,人这个类。性别是某个人的一个性质,不是所有的人类都是男,或者都是女。这个性质的值随着对象的不同而不同。李雷是人类的一个对象,性别是男;韩美美也是人类的一个对象,性别是女。

当定义类的方法时,必须要传递一个self的参数。这个参数指代的就是类的一个对象。我们可以通过操纵self,来修改某个对象的性质。比如用类来新建一个对象,即下面例子中的li_lei,那么li_lei就被self表示。我们通过赋值给self.attribute,给li_lei这一对象增加一些性质,比如说性别的男女。self会传递给各个方法。在方法内部,可以通过引用self.attribute,查询或修改对象的性质。

这样,在类属性的之外,又给每个对象增添了各自特色的性质,从而能描述多样的世界。

classHuman(object):

def__init__(self,input_gender):

self.gender=input_gender

defprintGender(self):

printself.gender

li_lei=Human('male')#这里,'male'作为参数传递给__init__()方法的input_gender变量。printli_lei.gender

li_lei.printGender()

在初始化中,将参数input_gender,赋值给对象的性质,即self.gender。

li_lei拥有了对象性质gender。gender不是一个类属性。Python在建立了li_lei这一对象之后,使用li_lei.gender这一对象性质,专门储存属于对象li_lei的特有信息。

对象的性质也可以被其它方法调用,调用方法与类属性的调用相似,正如在printGender()方法中的调用。

以上内容为大家介绍了Python之面向对象的进一步拓展,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • Python代码统计工具 此前实现的C代码统计工具仅能分析和统计C语言代码文件,但其设计思想也适用于Python代码及其他编码语言。Python行数统计的难点在于注释行,因为Python有两种注释方式:简单明了的单行注释和复杂
  • Python自定义计时函数 python标准库提供的cProfile/profile模块,计时输出信息较多。本节将介绍其他几种精度略低但简单易用的计时工具。根据代码粒度不同,将其分为三类。1.1整个程序计时Unix/Linux系
  • python字符串的正则匹配:re模块 正则表达式在匹配负责字符串的时候,确实很有用:>>>importre>>>re.findall(r'\bf[a-z]*','whichfootorhandfellfastest
  • Python重定向方式 本节介绍常用的Python标准输出重定向方式。这些方法各有优劣之处,适用于不同的场景。控制台重定向最简单常用的输出重定向方式是利用控制台命令。这种重定向由控制台完成,而与Python本身无关。Wind
  • Python重定向之print >>和sys.stdout print>>重定向这种方式基于print语句的扩展形式,即"printobj>>expr"。其中,obj为一个file-like(尤其是提供write方法的)对象,为None时对应标准输出(sys.
  • Python上下文管理器 本节严格意义上并非新的重定向方式,而是利用Pyhton上下文管理器优化上节的代码实现。借助于上下文管理器语法,可不必向重定向使用者暴露sys.stdout。首先考虑输出抑制,基于上下文管理器语法实现如