• python 之类、self


    类是什么

      可以视为种类或者类型的同义词。所有的对象都属于某一个类,称为类的实例。

      例如:鸟就是"鸟类"的实例。这就是一个有很多子类的一般(抽象)类:看到的鸟可能属于子类"百灵鸟"。可以将"鸟类"想象成所有鸟的集合,而"百灵鸟类"是其中的一个子集。当一个对象所属的类是另外一个对象所属类的子集时,前者就被称为后者的子类,所以"百灵鸟类"是"鸟类"的子类,"鸟类"是"百灵鸟类"的超类

    定义子类只是个定义更多方法的过程

    创建类

    复制代码
    >>> class Person:
        def setName(self,name):
            self.name=name
        def getName(self):
            return self.name
        def greet(self):
            print "Hello,world! I'm %s" % self.name
    >>> foo=Person()
    >>> bar=Person()
    >>> foo.setName('Nsds')
    >>> bar.setName('Ysdy')
    >>> foo.greet()
    Hello,world! I'm Nsds
    >>> bar.greet()
    Hello,world! I'm Ysdy
    复制代码

    在调用foo的setName和greet函数时,foo自动将自己作为第一个参数传入函数中,因此命名为self。没有self的话,成员方法就没法访问他们要对其特性进行操作的对象本身了

    特性是可以外部访问的:

    >>> foo.name
    'Nsds'
    >>> bar.name='Yoda'
    >>> bar.greet()
    Hello,world! I'm Yoda

    首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

        self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗,不要搞另类,大家会不明白的。下例中将self改为myname一样没有错误:

    复制代码
    1 class Person:
    2 def __init__(myname,name):
    3 myname.name=name
    4 def sayhello(myname):
    5 print 'My name is:',myname.name
    6 p=Person('Bill')
    7 print p

    复制代码

    self指的是类实例对象本身(注意:不是类本身)。

    复制代码
    1 class Person:
    2 def _init_(self,name):
    3 self.name=name
    4 def sayhello(self):
    5 print 'My name is:',self.name
    6 p=Person('Bill')
    7 print p
    复制代码

    在上述例子中,self指向Person的实例p。 为什么不是指向类本身呢,如下例子:

    1 class Person:
    2 def _init_(self,name):
    3 self.name=name
    4 def sayhello(self):
    5 print 'My name is:',self.name
    6 p=Person('Bill')
    7 p1 = Person('Apple')
    8 print p
  • 相关阅读:
    台式机安装无线网卡建立共享操作
    Mean shift
    拉格朗日乘子法
    凸集和凸函数
    图像插值法
    高斯平滑
    gamma校正
    SIFT feature
    VS2013+Win10+opencv3.0配置(包括opencv2.4.10版本)
    caffe添加自己编写的Python层
  • 原文地址:https://www.cnblogs.com/Libo-Master/p/7591598.html
Copyright © 2020-2023  润新知