一直对这些概念比较混淆,今天理一下。
构造函数和成员函数
构造函数也被称为构造器,当创建对象的时候第一个被自动调用的函数,系统默认提供了一个无参的构造函数,语法如下:
def __ init__(self,arg1,arg2,...):
函数体
构造函数和成员函数的区别
- 成员函数的函数名可以自定义,但是,构造函数的函数名是固定的__init__
- 成员函数需要被手动调用,但是,构造函数在创建对象的过程中是自动被调用的
- 对于同一个对象而言,成员函数可以被调用多次,但是,构造函数只能被调用一次
参考文档:
类变量、成员变量、局部变量
class Fruit():
num=0 #类变量,可以直接用类调用,或用实例对象调用
def __init__(self,x,y):
self.x=x #实例变量(成员变量),需要它是在类的构造函数内以self.开头来定义的
self.y=y
self.fuc(self.x,self.y)
def add(self):
total=2 #局部变量
self.vara=3 # 虽是以self.给出,但并没有在构造函数中进行初始化
self.varb=4
fina=(self.x+self.y)*total
return fina
def fuc(self,a,b):
self.varc=a #成员变量,他们在成员函数fuc()中定义,但是在构造函数中调用了fuc()函数
self.vard=b
总结:
一个类=类变量(可以没有)+构造函数(必须有,没有的话默认调用)+成员函数(自己定义,可以没有)
构造函数中定义了类的成员变量,类的成员变量一定是在构造函数中以self.开头的变量!
构造函数只是用来构造对象的方法。它没有传递到任何地方。而是将对象self自动传递给该类的所有方法。
如果您没有要构造的东西,则不需要构造器,但通常一开始您需要做一些事情。
成员函数中可以调用成员变量和类变量!成员函数的形参在类的实例调用该函数时传递,成员函数的局部变量在该成员函数内部定义。调用成员函数和调用普通函数一样,只是成员函数由该函数对应的类调用,即需要写成xxxx.func()而不是直接使用func()!