当先锋百科网

首页 1 2 3 4 5 6 7

    这里要考虑的重要事项是您正在使用的变量和/或函数名称的范围。 全局范围意味着
一切都可以看到它,无论是在顶层,在函数内部,还是在一个类中的方法内部。
    本地范围意味着它已锁定在该块的上下文中,并且块外的任何内容都无法看到它。在
您的情况下,该块是一个函数。
    
1、以Student类为例,在Python中,定义类如下:

class Student(object):
    pass


2、实例:定义好了类,就可以通过Student类创建出Student的实例,创建实例是通过类
名+()实现:

student = Student()

3.类起模板作用,属性写死,属性也可成变量方法:
Python当中的一个内置方法__init__方法,例如在Student类时,把name、score等属性绑
上去:

class Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score

实际应用:

>>>student = Student("Hugh", 99)
>>>student.name
"Hugh"
>>>student.score
99

4、在类中的函数调用类中的属性。
    既然Student类实例本身就拥有这些数据,那么要访问这些数据,就没必要从外面的
函数去访问,而可以直接在Student类的内部定义访问数据的函数(方法)

class Student(obiect):
    def __init__(self, name, score):
        self.name = name
        self.score = score
    def print_score(self):
        print "%s: %s" % (self.name, self.score)

>>>student = Student("Hugh", 99)
>>>student.print_score
Hugh: 99

5、self代表类的实例
(1)self代表的是类的实例。而self.__class__则指向类。

class Test:
    def ppr(self):
        print(self)
        print(self.__class__)

t = Test()
t.ppr()


执行结果:

<__main__.Test object at 0x000000000284E080>
<class '__main__.Test'>

    注意:把self换成this,结果也一样,但Python中最好用约定俗成的self。
    在Python解释器的内部,当我们调用t.ppr()时,实际上Python解释成Test.ppr(t),
【报错】的例子如下:

class Test:
    def ppr():
        print(self)
t = Test()
t.ppr()
命令行如下:
Traceback (most recent call last):
  File "cl.py", line 6, in <module>
    t.ppr()
TypeError: ppr() takes 0 positional arguments but 1 was given

        运行时提醒错误如下:ppr在定义时没有参数,但是我们运行时强行传了一个参数。
由于上面解释过了t.ppr()等同于Test.ppr(t),所以程序提醒我们多传了一个参数t。
(2)不用self,类中函数参数不一定要必须有self,【1】有参数可以使用
@classmethod类方法【2】无参数直接调用
【1】中的

class Test:
    @classmethod
    def ppr(cls):
        print(__class__)
Test.ppr()、、
运行结果:
<class '__main__.Test'>

【2】中的

class Test:
    @classmethod
    def ppr():
        print(__class__)
Test.ppr()

运行结果:
<class '__main__.Test'>

同一个类中同级函数的相互调用:

class DemoSpider(scrapy.Spider):
    def parse(self, response):
        self.slideBlank()
    def slideBlank(self):
        pass