美文网首页
再谈类定义

再谈类定义

作者: cloveses | 来源:发表于2018-08-25 16:40 被阅读0次

上文中定义了一个包含一个构造方法和四个实例属性的类MyLine。对于Python中的类,还有其他相关的概念需要我们了解。

Python中实例属性包含实例变量和实例方法。

1.实例变量的定义

作为动态语言,Python中的类不要求预先定义实例变量,实例变量赋值即视为定义,你也可以在类的其他普通方法中定义和使用实例变量。请看如下交互式环境下运行的代码:


>>> class Foo:

         def__init__(self,x):

                   self.x= x

         deftesta(self,y):

                   self.y= y

         defgetxy(self):

                   print(self.x,self.y)

>>> f = Foo(3)

>>> f.getxy()

Traceback (most recent call last):

  File"", line 1, in

   f.getxy()

  File"", line 9, in getxy

   print(self.x,self.y)

AttributeError: 'Foo' object has noattribute 'y'

>>> f.testa(9)

>>> f.getxy()

3 9

第一次调用f.getxy()时,试图使用实例变量y,Python给出的错误信息很明确,此时,Foo对象的实例f还不具有实例变量y。当执行完f.testa(9)时,实际上就是运行了方法中的语句self.y = 9,这时,通过赋值即定义的形式使f这个实例具有了y这个实例变量。所以,再次调用f.getxy()时,成功地输出了x和y的属性值。

一般情况下,实例变量尽量在类的构造方法中定义和赋值,如果能保证其实例变量是在使用前被定义和赋值,则也可以在一般方法中定义实例变量,实现的方法可以是在构造方法中调用定义实例变量的一般方法一次。

2.实例方法的定义

通过上文中的代码,也可以看出一般实例方法的定义和构造方法定义形式是类似的,只不过方法名称不使用双下划线了。

一般方法的定义时,第一个参数也是self,用于对实例自身的引用,其他参数可以和面向过程的函数一样,由用户根据实际需求定义。但需要说明的是,在使用类实例去调用普通的实例方法时,self这个参数是不用提供的,由Python自动传入。

相关文章

  • 再谈类定义

    上文中定义了一个包含一个构造方法和四个实例属性的类MyLine。对于Python中的类,还有其他相关的概念需要我们...

  • chat:再谈社区定义

    chat:再谈社区定义

  • java基础第八篇---综合实例(人机猜拳游戏)

    玩家类定义 电脑类定义 游戏类定义

  • Python元类再谈

    在Python中一切都是对象,类型也是对象;类比类型和实例的概念,类型也必然有自己的类型,十分合理。事实上,类型的...

  • 面向对象1 -11.10 欠缺

    1.1定义类 定义一个类,格式如下: class类名: 方法列表 demo:定义一个Car 类 #定义类...

  • Go 语言极速入门4 - 面向对象

    一、自定义类 定义类:type 类名 struct 1.1、定义类 1.2、实例化类 二、方法 方法的定义方法实际...

  • Ruby元编程笔记 - 类中的魔法

    Ruby元编程笔记 - 类定义 类定义揭秘 在类定义中,self就是正在定义的类。 所有使用def定义的方法都成了...

  • 类定义

    定义类的时候,类名后面加括号或者不加括号都行,例如: class Person(): class Person: ...

  • 定义类

    定义类 什么是类 在面向对象程序设计中,类是: 一种面向对象编程语言的构造 创建对象的蓝图 描述了所创建对象共同的...

  • 定义类

    荷兰程序员Gabor de Mooij提出了一种比Object.create()更好的新方法,他称这种方法为"极简...

网友评论

      本文标题:再谈类定义

      本文链接:https://www.haomeiwen.com/subject/veegiftx.html