python3,类构造方法

class A(): #定义一个名称为A的类,必须要有括号和:,语法规定
    def __init__(self, python): #构造方法,也是python的一个魔法方法,其实也就是一个初始化方法, 
                                在类被创建的时候会自动调用这个方法,这个以双下划线开头的 
                                __init__()方法可以说是python的一个内置api,每次创建类就会被调 
                                用,如果不写这个方法也会被调用,只不过该方法为空,不执行任何操作
        self.hh = python #创建一个全局变量,这个全局变量是相对与类而言,在整个A类里,所有的类方法 
                         都能通过self.hh来获取到python这个变量,例如fun1中的print(self.hh)就 
                         会打印python这个变量而不是打印fun1里的hh变量,此时self.hh指的是类里的全 
                         局变量而不是函数的局部变量
    def fun1(self): #类方法fun1
        hh = 'linux' #方法中的局部变量,在fun1中print(hh)会打印linux,而不是打印python变量
        self.param = 'test' #在类方法里定义一个类全局变量,类和类方法可以任意访问这个变量,fun2中 
                             打印self.param是合法的。
        print(self.hh) #打印类全局变量self.hh
        print(hh)#打印类方法fun1中的hh变量

    def fun2(self): #类方法fun2
        print(self.param) #打印fun1中定义的类全局变量
a = A('I am python') #创建一个A类的实例a,并传入参数‘I am python’,这个参数将会传递给 
                     __init__(self,python)构造方法的变量python,接着这个python的参数又传给了 
                     self.hh,最终self.hh变量的值为I am python
a.fun1() #调用fun1
a.fun2() #调用fun2

python里的self参数代表自身的意思,它指向类本身,当类没有被创建也就是没有被实例化的时候(创建类也叫实例化对象),即当a没有被创建(实例化)的时候,这个类是没有被分配内存的,一旦创建(实例化)self就指向类本身,类似于java中的this,只要加了self.的变量都会被视为类的全局变量,类本身和类方法可以调用它,不加self.的话就是局部变量,方法中不能调用

以上代码的大概流程是,创建一个类A,同时在构造方法(魔法方法)中初始化类,由于每次创建类的时候都会先自动执行__init__()这个方法,所以一般将要初始化的代码放在__init__()方法里,例如初始化一个变量self.hh,当a=A()这行代码执行的时候就会调用__init__(self,python)这个函数,python的变量就会传递给self.hh,为了更好的演示在__init__(self,python)这个方法做了什么,我们可以这样做

class A():
    def __init__(self, python):
        self.hh = python
        self.fun1()
        self.fun2()
    def fun1(self):
        hh = 'linux'
        self.param = 'test'
        print(self.hh)
        print(hh)

    def fun2(self):
        print(self.param)
a = A('I am python')

将fun1和fun2的调用放到__init__(self,python)这个方法里面去,结果打印的结果和上一段代码一致,虽然我们在实例化a之后没有用a.fun1,a.fun2去调用fun1和fun2这两个方法,但是在构造方法中调用了这两个方法,导致a被创建(实例化)的时候就执行了里面的打印函数

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值