嵌套函数
nonlocal关键字
global全局变量
local关键字
nonlocal关键字
LEGB规则
local(函数或类方法内部)>enclosed嵌套函数>global模块中的全局变量>build in(python本身自己的)
(就是一层一层外那个外找)
面向对象编程
面向过程:需要想第一步干什么,第二部干什么,但是当你碰到比较复杂的问题的时候,就会发现想1234列出步骤,是不可能的。
面向对象:需要想这个东西都是由什么对象组成的,然后先设计对象(其中需要用到面向过程思维),再组装。
类的定义
类:就是创建对象的“模具”
class Student: #类名一般首字母大写,多个单词采用驼峰原则
def __init__(self,name,score):
self.name = name
self.score = score
def say_score(self):
print("{0}的分数是:{1}".format(self.name,self.score))
s1 = Student("高琪",18)
s1.say_score()
构造函数__init__
__ init __方法:初始化创建好的对象。
第一个参数固定,必须为self。
实例属性
- 实例属性一般在__ init __中通过self.实例属性名称 = 初始值
- 创建对象后,通过实例对象访问:
obj = 类名()
obj.实例属性名 = 值
实例方法
实例方法从属与实力对象。
格式:
def 方法名(self,形参)
函数体
类对象
class 类名,实际上,当解释器实行class语句时,就会创建一个类对象
类属性
class Student: #类名一般首字母大写,多个单词采用驼峰原则
company = "SXT" #类属性
count = 0 #类属性
def __init__(self,name,score):
self.name = name #实例属性
self.score = score
def say_score(self): #实例方法
print("{0}的分数是:{1}".format(self.name,self.score))
s1 = Student("高琪",18) #s1是实例对象
s1.say_score()
类方法
类方法从属于类属性,格式:
@classmethod
def 类方法名(cls,形参):
函数体
静态方法
@staticmethod
def 静态方法名(形参列表):
函数体
类方法和静态方法中,不能调用实例变量,实例方法
__call__方法和可调用对象
定义了__call__方法的对象,可以像函数一样被调用
class SalaryAccount:
def __call__(self)
print("算工资了")
return 3000
s = SalaryAccount()
s() # 想调用函数一样,调用含call的对象