理策的RhinoPython教程
Class4
首先是上周的作业的参考答案,注意仍然只是参考,符合题意即可。
基础作业1:
基础作业2:
提高作业1:
提高作业2:
下面是这节课的正式内容
类(class)
python,java,c#,js都被称为面向“对象”的编程方法,这里的对象很多时候都是通过类来创建的,标准来说,对象一般是指类的实例化,而类就是描述具有相同的属性和方法的对象的集合。
这里不讲的太深,只讲一些应用方面的。在类里可以使用之前的“def”来定义方法以调用操作。
一般来说,第一个方法会用def __init__(),叫做构造函数或者初始化方法,创建这个类的实例的时候就会调用这个方法。下面举一个例子:
在这个test类里面,我一共创建了三个方法或者说函数,第一个就是初始化方法,需要注意的是,在python中,类里面的方法第一个变量需要是“self”即类本身,被包含在类里面的变量也是如此。
打个比方,如果test是一个水果的“类”,那么里面的a,b,c可以理解成果皮质量,果核质量和总质量。
从12行开始运行,第12行就创建了一个t,一个test类的实例,1,2,分别赋值了这个t实例里的a,b变量(self不需要赋值)。第13行调用了t的show方法,显示了几个自变量,需要注意的是,c是在初始化方法中运算得来的。python以及许多其他面向对象的语言中,英文句号.都代表调用,方法和变量都是这样。
第14行,程序需要输出t中a的值,在这里t.a就是调用了t中a这个变量。
第15行,调用了t的sum方法,sum方法以return语句结尾,意思是这个方法会返回一个值,这里是out,在第15行里,这个值就被赋给了x。
类还有一个常用的性质称为继承,请看下面这个例子:
我定义了一个类称为testson,后面的的(test)意为testson是test的一个子类,子类可以有自己独有的方法,但同时也有母类所有的方法。在21行开始的程序中,testson类的一个实例s就调用了test母类的方法show(),而在24行,s则是调用了自己的son方法。这种继承可以大大简化程序的结构,类似于生物分类,下一层级的生物总是有着上一层级的特征,比如人和猫都是脊椎动物,都有脊柱,人和猫都是脊椎动物的子类,而脊椎动物则是人和猫的母类。
值得一提,python支持多重继承,即一个类可以有多个母类,在java和c#则不行,这带来的一些调用问题可以用super()函数解决,这里不赘述,包括方法重写,私有函数与变量等内容,有需要请自行查阅。
class是绝大多数形式算法必备的结构,所以请大量练习,这一次就不布置单独的作业,请完成之前作业中所有涉及class的作业,而部分没有用到class的可以试着用class来实现看看。
至于第四课和第五课,会是我之前写的一些案例讲解,不再是作业的形式。希望所有跟着教程在学的朋友们能在那之前熟练函数和类的概念和结构。
领取专属 10元无门槛券
私享最新 技术干货