欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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      #结果
相关标签: class