美文网首页
2021-02-22类和对象

2021-02-22类和对象

作者: testerPM | 来源:发表于2021-02-25 14:49 被阅读0次

    类与对象的概念

    面向对象的两个最重要的概念:类和对象
    类: 共性事物的抽象,是对某一个类具有共性事物的描述,是
    概念上的定义。比如,老师类,学生类
    对象:对象是共性事物的一个体现,是这类事物的每个个体,
    或者说是类的一个实例(instance),比如:张雪老师,李四老师,这都是具体的对象。

    总结:类是对象的模板,对象是类的实例

    类的结构:里面包含属性和函数
    属性是对象的状态,属性也叫成员变量(属性)
    方法是对象的行为,方法也叫函数,重点关注函数即可。
    举例:李四老师,他的属性有:姓名,年龄,身高,职业等
    他的功能有:会教书,会吃饭,会打字,会跑步等。简单来说,属性是静态的,行为是动态的。行为通过函数体现出来。

    代码演示

    定义一个类:Teacher类

    image.png

    (1)不带外部参数的类函数

    类函数必须要加关键字self
    Teacher.p代码如下:

    # -- coding: utf-8 --
    class Teacher:
         #定义属性
         name="李思思"
         age=28
         sex="femal"
         address="SH"
         #定义不传入外部参数的函数
         def teaching(self):#类内部创建的函数必须要加关键字self,这个self就是对象自己
             print('老师在上课')
         def  seeBook(self):
             print("老师在看书")
    #函数调用
    teacher=Teacher()#创建一个对象实例:语法:类名()
    teacher.teaching()#调用类函数:语法:对象.函数名()
    teacher.seeBook()#调用类函数:
    
    

    上面代码执行结果:


    image.png

    (2)类函数中访问类属性

    语法:self.属性
    Teacher.p代码如下:

    # -- coding: utf-8 --
    class Teacher:
         #定义属性
         name="李思思"
         age=28
         sex="femal"
         address="SH"
         #定义不传入外部参数的函数
         def teaching(self):#类内部创建的函数必须要加关键字self,这个self就是对象自己
             print(self.name+ "is teaching")#self.name 可以看成  对象.属性
         def  getInfo(self):
             print(self.name+"老师今年"+str(self.age)+"岁了")#这里年龄转成str,因为加号拼接必须是相同的数据类型
    #函数调用
    teacher=Teacher()#创建一个对象实例:语法:类名()
    teacher.teaching()#调用类函数:语法:对象.函数名()
    teacher.getInfo()#调用类函数:
    sex=teacher.sex#调用类属性
    print(sex)
    
    

    代码执行结果如下:


    image.png

    注意:

    1.在类里面定义的函数,必须要带一个self参数,pycharm会自动帮你加上self
    2.python中定义的类名可以和文件名不一致或者一致,java中文件名必须要和public类名一致。我这里为了方便,定义的是一致的。
    3.类函数中获取类属性:self.属性 (当然使用创建的teacher对像也可以)
    4.调用类里面定义的函数:1.创建对象 2.对象.函数()
    5.什么是类里面的函数:类冒号里面缩进定义的函数就是类函数
    6.虽然类里面可以使用self关键字,访问属性,函数,但是这不是意味着不需要创建对象了,函数调用时必须要创建对象。
    7.函数调用:创建对象的语句与定于类的语句时同级的,不是缩进关系。
    8.外部函数不能直接访问类里面定义的属性--->类属性只能通过对象去调用,所以外部函数想使用类属性,需要通过对象获取。

    (3)类函数中调用类函数

    image.png

    注意:1.两个类函数不能相互调用。---》会进入死循环
    2.函数内部的调用-》即类函数调用类函数:self.函数(),当然使用创建的teacher.函数()也可以

    (4)带外部参数的类函数

    a:带参数

    Teacher.py代码如下:

    class Teacher:
         #定义属性
         name="李思思"
         #定义不传入外部参数的函数
         def teaching(self,name):#
             print(name+'老师在上课')
         def  seeBook(self):
            # teacher.teaching()#这样写也是可可以的
             print("老师在看书")
    #函数调用
    teacher=Teacher()#创建一个对象实例:语法:类名()
    teacher.teaching("kk")#调用类函数:语法:对象.函数名()
    
    
    

    代码执行结果如下:

    image.png

    注意:1.类函数不管有没有加外部参数,self必须要有
    2.函数调用:必须传如参数和函数中的外部参数个数要一致(如果有默认参数值,则不会报错)

    image.png

    b.带默认参数

    如下图,如果有默认参数值,不传这个参数,代码执行不会报错

    image.png

    初始化函数也叫构造函数

    初始化函数

    我们知道类有属性和函数。那么在定义一个类的时候,是不是可以不用是西安创建属性呢?---》答案是肯定的。我们可以在初始化函数里面定义属性。

    Teacher.py代码如下:

    # -- coding: utf-8 --
    class Teacher:
         #定义一个初始化函数,创造实例的时侯,传递参数过来
         def __init__(self,age,sex):#类函数必须要加self参数
             #初始化函数定义三个属性:name,age,sex
             self.name="求斯"#初始化函数里面写死一个属性值
             self.age=age
             self.sex=sex
         def teaching(self):
             print(self.name+'老师在上课')#访问初始化里面定义的属性(或变量):self.name
             #print(name+'老师在上课')这句代码,name会有红色下滑线,因为teaching(self)函数没有传入外部参数,默认要获取初始化name属性,而访问初始化中的属性是:self.name
         def  seeBook(self,name):
             print("一个"+self.age+"岁的老师在看书"+",老师的名字是"+name)#这里name不会有红色报错,因为seeBook(self,name)传入name
    #函数调用
    teacher=Teacher("28","女")#创建一个对象实例:同时必须要传入age,sex
    teacher.teaching()#这里不需要传入参数,因为定义的teaching()函数没有引用外部参数
    teacher.seeBook("kk")#传入name.不使用初始化中的name
    
    
    

    代码执行结果:

    image.png image.png

    注意:

    1.初始化函数init()不是自己命名的。是python自带的一个函数,我们在使用的时候,可以传递参数,如上面的age,name,sex,创造实例时传入age,name,sex的值,顺序要一致,否则会报错

    image.png

    2.初始化函数也可以有默认参数值,如果初始化函数有默认参数值,那么创建实例时就可以不用传这个默认参数值。如果传了,就使用传入的值

    3.位置参数必须要在默认参数之前
    4.初始化函数和普通定义的函数有何不同:
    初始化函数名必须是init()
    5.要想使用初始化中的变量,就使用self.变量,如果不想使用初始化中的变量,那么就可以外部参数传入
    如下图:

    image.png

    相关文章

      网友评论

          本文标题:2021-02-22类和对象

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