python 类的继承,类中的函数调用以及类输入数组
程序员文章站
2022-05-13 20:00:21
...
第一部分,类的继承
先给出一个例子:
class People(): #定义类,要大写,python 2中要在括号里加如object这个单词
def __init__(self,n,a,w): #定义一个方法(类下的函数都称为方法),初始化形参(属性)
self.name = n
self.age = a
self.weight = w
def express(self): #定义第二个函数,括号里面的self不可少,表示需要用到初始化里的形参
print('My name is %s, and my age is %d' %(self.name,self.age))
class Xiaowen(People): #定义另一个类,并继承People父类
def __init__(self,n,a,w,g): #在父类上加了一个形参g
People.__init__(self,n,a,w) #调用父类的构造函数,用于将父类和子类联系起来
#上面一句也可以用super来进行父类(超类)的继承,并建议用super,因为类比较多的时候不用super会混乱
#super(Xiaowen,self).__init__(n,a,w)#使用super继承父类
self.grade = g
def express(self):
print('My name is %s, and my grade is %d'%(self.name,self.grade))
people = Xiaowen('wudl',22,53,3) #实例
people.express()
类的继承建议使用super,如上代码中的解释
第二部分,类中的函数调用
在同一个类中第二个函数有时候可能需要调用第一个函数,如下:
class Fun(object): #定义类
def __init__(self,x): #初始化参数
self.x = x
def fun1(self,y): #定义第一个函数,self表示继承上面的参数x,而y是fun1自己的一个参数,不是类的参数
a = y**2+2+self.x
return a
def fun2(self): #定义第二个函数
b = self.fun1(3)+3 #调用fun1,同时参数y实例化为3
return b
def fun3(self):
return(self.fun1(3)+3) #便捷的输出,不想再定义一个参数来储存
ans = Fun(1) #实例化,参数x实例化为1,但参数y是没有实例化的,因为y是fun1自己的参数
ans1 = ans.fun1(2) #将参数y赋值为2
ans2 = ans.fun2() #要有括号
ans3 = ans.fun3()
print(ans1,ans2,ans3)
>>>>> 7 15 15 #结果
注意:在调用的时候一定要加括号,否则不输出结果,如ans2=ans.fun()
第三部分,类输入数组
跟第二部分相同,只是类中输入的x是一个数组,如下:
import numpy as np
class Fun(object): #定义类
def __init__(self,x): #初始化参数
self.x = x
def fun1(self,y): #定义第一个函数,self表示继承上面的参数x,而y是fun1自己的一个参数,不是类的参数
a = y**2+2+self.x[0] #self.x[0]表示数组的第一个数,即1.
return a
def fun2(self): #定义第二个函数
b = self.fun1(3)+3 #调用fun1,同时参数y实例化为3
return b
def fun3(self):
return(self.fun1(3)+3) #便捷的输出,不想再定义一个参数来储存
ary = np.array((1,2,3))
ans = Fun(ary) #实例化,参数x实例化为1,但参数y是没有实例化的,因为y是fun1自己的参数
ans1 = ans.fun1(2) #将参数y赋值为2
ans2 = ans.fun2()
ans3 = ans.fun3()
print(ans1,ans2,ans3)
>>>>> 7 15 15 #结果