• python中的类和对象


    摘要:本文主要介绍了python中的类和对象的基础内容。由于在c++中对类和对象已经有了较为深刻的认识,所以此部分就是主要熟悉一下创建方法和使用方法。

    1、类、对象的创建和简单使用

    主要观察创建类的方法,然后用类创建一个对象,然后在创建的对象身上使用类中的方法:

    1 class person():
    2     def Output_name(self):
    3         print('Tom')
    4 
    5 per=person()
    6 per.Output_name()  #Tom

     在上面的例子中,类中函数的参数有一个self,其实这个东西相当于c++中的this指针,self相当于创建的对象,从下面的例子中可以清楚的理解:

    1 class person():
    2     def Output_name(self):
    3         print('Tom')
    4         print(self)
    5 
    6 per=person()
    7 print(per)
    8 per.Output_name()  #Tom

    执行结果如下:

    1 <__main__.person object at 0x000001F03FBA65C0>
    2 Tom
    3 <__main__.person object at 0x000001F03FBA65C0>

    2、在类外对对象的属性进行设定

    和c++有很大的不同,python可以直接在类外对对象进行属性的设定:

    1 class person():
    2     def Output_name(self):
    3         print('Tom')
    4 
    5 per=person()
    6 per.name='Tom'
    7 per.age=10

    设定好了以后当然还可以直接在类外对对象的属性进行访问:

    1 class person():
    2     def Output_name(self):
    3         print('Tom')
    4 
    5 per=person()
    6 per.name='Tom'
    7 per.age=10
    8 print(f'这个人的名字叫做:{per.name}') #这个人的名字叫做:Tom

    如果在类内设定了访问属性的方法,那么就可以直接可以调用该方法实现对象属性的访问:

    1 class person():
    2     def Output_name(self):
    3         print(self.name)
    4 
    5 per=person()
    6 per.name='Tom'
    7 per.Output_name()  #Tom

    3、魔法方法

    在python类中,可以使用具有特殊形式的魔法方法:_xx_()

    (1)首先来看第一种魔法方法__init__(self)这种方法其实可以理解为c++中的构造函数,完成了属性的初始化,创建对象的时候会直接调用这个方法:

    其实下面例子的方法可以理解为默认构造或者无参构造

    class person():
        def __init__(self):
            self.name='Tom'
            self.age=18
        def Output(self):
            print(self.name)
            print(self.age)
    
    per=person()
    per.Output()  #Tom  , 18

    当然,类似于c++,还应该有有参构造函数__init__(self,参数,参数...):

     1 class person():
     2     def __init__(self,name,age):
     3         self.name=name
     4         self.age=age
     5     def Output(self):
     6         print(self.name)
     7         print(self.age)
     8 
     9 per=person('Tom',18)
    10 per.Output()  #Tom  , 18

    (2)再介绍另外一种魔法方法:_str_(self),前面我们在定义了一个对象以后,直接用print函数输出这个对象,那么得到的就是这个对象的地址,然而我们实际项目中,我们往往不需要这样的地址,而是更希望来一些说明性的文字,来介绍这个对象或者类,这个方法就是玩成这样一项工作:

    1 class person():
    2     def __init__(self,name,age):
    3         self.name=name
    4         self.age=age
    5     def __str__(self):
    6         return "这是对一个人的介绍"
    7 
    8 per=person('Tom',18)
    9 print(per)   #这是对一个人的介绍

    (3)当然还有一种魔法方法:_del_(self),这个方法其实从字面也很好理解,就是析构函数,当我们定义的一个对象并且进行完所有的相关操作以后,内存需要被收回,这个时候就会自动调用该方法:

     1  class person():
     2       def __init__(self,name,age):
     3           self.name=name
     4           self.age=age
     5       def __del__(self):
     6           print('内存被收回')
     7   
     8   per=person('Tom',18)
     9  
    10  #执行完所有代码,会有这样的结果:内存被收回

    4、静态方法

    类似于c++,python中也有静态方法:@staticmethod,静态方法可以用对象访问,也可以直接用类访问

    1 class father(object):
    2     @staticmethod
    3     def func():
    4         print('静态方法调用')
    5 father1=father()
    6 father1.func()   #静态方法调用
    7 father.func()   #静态方法调用
  • 相关阅读:
    虚拟机添加新磁盘挂载,导致以前的文件丢失解决办法
    python实现tab键自动补全
    设计模式
    js 深浅拷贝 笔记总结
    js 闭包
    flex 布局
    vue2.0 之 生命周期
    移动端适配 rem
    vue 之 双向绑定原理
    vue2.0 之 过渡动画transtion
  • 原文地址:https://www.cnblogs.com/lzy820260594/p/11808342.html
Copyright © 2020-2023  润新知