A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

吴宝纯

初级黑马

  • 黑马币:27

  • 帖子:9

  • 精华:0

© 吴宝纯 初级黑马   /  2018-8-1 13:49  /  886 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

创建类
类的定义以关键字class开头,之后跟着一个名字(用户定义)来标识这个类,并且以冒号结尾。类的内容以缩进(4个空格)表示,如下例的pass表示什么事情也不做。
Python命名规则(以字母或者下划线开头,名字只能含有字母、下划线或者数字)。一般使用驼峰式命名(以大写字母开头,并且随后紧跟的任意个单词,这些单词都要以大写字母开头)。
class MyFirstClass:
    pass
将上述的代码保存为first_class.py文件,然后运行命令python -i first_class.py。参数-i表示在交互式解释器运行这个脚本。

$ python -ifirst_class.py
>>> a= MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x103fd7e80>
>>> b =MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x103fd7eb8>

上述实例化了两个对象a和b。键入类的名字并紧跟一对小括号。
添加属性
可以通过点记法给一个实例化的对象赋予任意属性,点记法形式为<object>.<attribute> =<value>来为属性赋值,这个值可以是任意的,如python内置的数据类型、其他的对象甚至是一个函数或者是另一个类。

class Point:
    pass

p1 = Point()
p2 = Point()

p1.x = 5
p1.y = 4

p2.x = 3
p2.y = 6

print(p1.x, p1.y)
print(p2.x, p2.y)

这段代码创建了一个没有任何数据和行为的Point 类。然后创建了这个Point类的两个实例,并且给每个实例赋予一个x坐标和一个y坐标。运行如上的代码会得到如下的结果。
5 4
3 6
让类实际做一些事情
上面我们已经可以让一个对象带有属性,接下来是通过激发一些行为来引起这些属性的变化。在Point类里面添加了一个reset方法,该方法是将点移到原点(该方法不需要用到参数,是个很好的例子)。

class Point:
    def reset(self):
        self.x = 0
        self.y = 0

p = Point()

p.x = 5
p.y = 4
print(p.x, p.y)


p.reset()
print(p.x, p.y)

python中的方法(method)定义和函数(function)基本相同,方法可以操作对象本身和任意传入的参数。方法与函数不同的是,所有的方法都有一个必须的参数,这个参数通常被称为self,若忘记,引用该方法时会出现报错。一个方法中的self参数,是对调用这个方法的对象的一个引用,我们可以和其他对象一样访问这个对象的属性和方法。当要改变self对象的x和y属性值时,通过调用内部的reset方法实现。
当调用p.reset(),并没有给它传入self参数,python会自动将这个对象传给了该方法。
方法只是一个函数而已,只不过恰巧出现在类中。除了可以直接调用一个对象的方法以外,我们也可以在类中调用这个函数,并且明确可以将这个对象作为self参数传给对象。
class Point:
    def reset(self):
        self.x = 0
        self.y = 0

p = Point()
Point.reset(p)
print(p.x, p.y)


以上是我对于类的对象的创建和赋值所总结出来的一些经验方法。

评分

参与人数 1黑马币 +2 收起 理由
金路成 + 2

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马