zoukankan      html  css  js  c++  java
  • 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()   #静态方法调用
  • 相关阅读:
    1026 Table Tennis (30)
    1029 Median
    1025 PAT Ranking (25)
    1017 Queueing at Bank (25)
    1014 Waiting in Line (30)
    1057 Stack (30)
    1010 Radix (25)
    1008 Elevator (20)
    字母大小写转换
    Nmap的基础知识
  • 原文地址:https://www.cnblogs.com/lzy820260594/p/11808342.html
Copyright © 2011-2022 走看看