zoukankan      html  css  js  c++  java
  • __init__()与self

    类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用,像下面这样:

    def __init__(self): self.data = []

    类定义了 __init__() 方法,类的实例化操作会自动调用 __init__() 方法。如下实例化类 MyClass,对应的 __init__() 方法就会被调用:

    x = MyClass()

    当然, __init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上。例如:

    实例(Python 3.0+)

    #!/usr/bin/python3 class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart x = Complex(3.0, -4.5) print(x.r, x.i) # 输出结果:3.0 -4.5

    self代表类的实例,而非类

    类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

    class Test: def prt(self): print(self) print(self.__class__) t = Test() t.prt()

    以上实例执行结果为:

    <__main__.Test instance at 0x100771878>
    __main__.Test

    从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。

    self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的:

    class Test: def prt(runoob): print(runoob) print(runoob.__class__) t = Test() t.prt()

    以上实例执行结果为:

    <__main__.Test instance at 0x100771878>
    __main__.Test
    萍水相逢逢萍水,浮萍之水水浮萍!
  • 相关阅读:
    General Problem Solving Techniques [Beginner-1]~H
    做HDU1010 带出来一个小问题
    HDU1009
    hdu1007
    hdu 1008
    HDU1006
    hdu 1005
    hdu 1004
    UVA 10970 第一次比赛 D题 (后面才补的)
    LightOJ 1317 第八次比赛 A 题
  • 原文地址:https://www.cnblogs.com/AIBigTruth/p/14676059.html
Copyright © 2011-2022 走看看