Python之构造函数

参考:

Python之构造函数_构造函数 python-CSDN博客

构造函数的特点:

创建对象;给对象的成员变量赋值

构造函数和成员函数之间的区别:

  1. 成员函数需要被手动调用,但是,构造函数在创建对象的过程中是自动被调用的
  2. 对于同一个对象而言,成员函数可以被调用多次,但是,构造函数只能被调用一次
python 复制代码
#1.构造函数被调用
'''成员函数需要被手动调用,但是,构造函数在创建对象的过程中是自动被调用的'''

class Check():
    #成员变量
    num1 = 0
    s1 = ""
 
    #成员方法
    def show(self):
        print("showing")
 
    #构造函数
    def __init__(self):
        print("构造函数被执行了")
 
c = Check()          #构造函数被执行了
c.show()             #showing
python 复制代码
#2.给构造函数添加参数

class Check1():
    #成员变量
    num1 = 0
    s1 = ""
 
    #成员方法
    def show(self):
        print("showing")
 
    #构造函数
    def __init__(self,*s):     #设置不定长参数
        print("构造函数被执行了~~~")
 
#注意1:当在类中定义了构造函数,并且给构造函数设置了参数,系统将不再提供无参的构造函数
#在创建对象的时候,注意参数的匹配问题
#注意2:在同一个类中,构造函数只能出现一次
c1 = Check1(10,20)            #构造函数被执行了~~~
c1 = Check1()              #构造函数被执行了~~~

#构造函数

def init(self,*s): #设置不定长参数

print("构造函数被执行了~~~")

python 复制代码
#3.构造函数的作用
'''对于同一个对象而言,成员函数可以被调用多次,但是,构造函数只能被调用一次'''
class Check2():
    #成员变量
    num1 = 0
    s1 = ""
 
    #成员方法
    def show(self):
        print("showing")
 
    #构造函数
    #构造函数的形参列表一般和成员变量有关【主要给成员变量赋值】
    def __init__(self,n,s):
        print(n,s)
        num1 = n
        s1 = s
 
c2 = Check2(10,"abc")           #10 abc
print(c2.num1,c2.s1)        #0
python 复制代码
#4.self的作用:通过self区分成员变量和局部变量
class Check3():
    #成员变量
    num1 = 0
    s1 = ""
 
    #成员方法
    def show(self):
        print("showing")
 
    #构造函数
    #构造函数的形参列表一般和成员变量有关【主要给成员变量赋值】
    def __init__(self,n,s):
        print(n,s)
        #此时的num1并不是一个局部变量,而是一个成员变量
        self.num1 = n
        self.s1 = s
 
c3 = Check3(11,"abc")           #11 abc
print(c3.num1,c3.s1)        #11 abc
python 复制代码
#5.使用self之后:可以省略成员变量的定义
class Check4():
    #成员方法
    def show(self):
        print("showing")
 
    #构造函数
    def __init__(self,num1,s1):
        print(num1,s1)
        #定义成员变量,成员变量赋初始值
        self.num1 = num1
        self.s1 = s1
 
c4 = Check4(12,"abc")           #12 abc
print(c4.num1,c4.s1)        #12 abc
相关推荐
意如流水任东西2 分钟前
[C++]类和对象(上)
开发语言·c++
清纯世纪7 分钟前
基于深度学习的图像分类或识别系统(含全套项目+PyQt5界面)
开发语言·python·深度学习
孤寂大仙v8 分钟前
【C++】STL----stack和queue常见用法
开发语言·c++
孤华暗香12 分钟前
Python快速入门 —— 第三节:类与对象
开发语言·python
Monodye20 分钟前
【Java】网络编程:TCP_IP协议详解(IP协议数据报文及如何解决IPv4不够的状况)
java·网络·数据结构·算法·系统架构
一丝晨光27 分钟前
逻辑运算符
java·c++·python·kotlin·c#·c·逻辑运算符
元气代码鼠27 分钟前
C语言程序设计(进阶)
c语言·开发语言·算法
霍霍哈嗨40 分钟前
【QT基础】创建项目&项目代码解释
开发语言·qt
friklogff41 分钟前
【C#生态园】从图像到视觉:Emgu.CV、AForge.NET、OpenCvSharp 全面解析
开发语言·c#·.net
无名指的等待7121 小时前
SpringBoot中使用ElasticSearch
java·spring boot·后端