首页 / 知识
Python之面向对象的进一步拓展
2023-11-12 13:34:00
我们熟悉了对象和类的基本概念。我们将进一步拓展,以便能实际运用对象和类。
调用类的其它信息
上一讲中提到,在定义方法时,必须有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相关知识,请关注我们
最新内容
相关内容
python的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为PyPython网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tcPython 3.6 中针对文件系统的神奇
Python 3.6 中针对文件系统的神奇方法,数字,代码,数据,标准,信息,培训,首次,工作,文件名,常数,Python3.6首次发布于2016年,尽管它已经发布了很Python 之模块重载的五种方法
Python 之模块重载的五种方法,环境,培训,方法,模块,文件夹,例子,下面,内容,语句,请看,python环境准备新建一个foo文件夹,其下包含一个bar.py文提升Python数据分析能力的方法
提升Python数据分析能力的方法,分析,数据,工具,代码,时间,环境,报告,信息,培训,标准,1.Pandas分析包这个工具的好处是显而易见的。下面的动画Python 中如何实现参数化测试?
Python 中如何实现参数化测试?,密码,数据,测试,业务,情况,预期,培训,系统,参数,方法,之前,我曾转过一个单元测试框架系列的文章,里面介绍了unitPython中字典合并的实现方法
Python中字典合并的实现方法,培训,结果,以上,版本,字典,方法,函数,下面,背景,发现,TableofContents背景Methon1:适用于Python3.5及以上版本呢M学习python的三种方法
学习python的三种方法,项目,代码,公司,时间,工程,培训,中级,初级,资料,第一,Python的用途十分广泛,不同的程序员将其用于不用的领域,不同的程序Python文件读取相关方法
Python文件读取相关方法,数据,位置,文件,中行,培训,方法,字节,内容,结果,字符串,我们知道,对文件的读取操作需要将文件中的数据加载到内存中,而Python类和对象
Python类和对象,代码,培训,对象,实例,定义,关键字,函数,问题,顶层,全名,刚接触python中的类和对象,我也和大多数小伙伴一样迷茫,不知道它和我所Python中JSON 对象有哪些特点?
Python中JSON 对象有哪些特点?,名称,信息,代码,培训,数据,观察,对象,嵌套,数组,特点,JSON对象的结构是什么样子呢?上面代码中的obj就是一个JSPython中的对象
Python中的对象,数据,连续,代码,培训,概念,对象,内存,类型,初始化,静态,Python中一切皆是对象。————GuidovanRossum(1989)这句话只要你学