Python学习-Day6-函数(三)、面向对象编程

1026-徐同学

发表文章数:41

首页 » Python » 正文

嵌套函数(内部函数)

def outer():
    print("outer running")

    def inner():
        print("inner running")
    inner()
outer()

outer running
inner running

nonlocal关键字

nonlocal 用来声明外层的局部变量
global 用来声明全局变量

def outer():
    b = 10

    def inner():
        nonlocal b
        print("inner:",b)
        b = 20

        global a
        a = 1000
    inner()
    print("outer:",b)
outer()
print("a:",a)

inner: 10
outer: 20
a: 1000

LEGB原则

Python学习-Day6-函数(三)、面向对象编程

str = "global str"
def outer():
    str = "outer"

    def inner():
        str = "inner"
        print(str)
    inner()

outer()

inner

面向对象编程

Python学习-Day6-函数(三)、面向对象编程

面向对象和面向过程区别

面向过程思维

Python学习-Day6-函数(三)、面向对象编程

面向对象思维

Python学习-Day6-函数(三)、面向对象编程

面向对象和面向过程的总结

Python学习-Day6-函数(三)、面向对象编程

对象的进化

Python学习-Day6-函数(三)、面向对象编程

  1. 简单数据
  2. 数组
  3. 结构体
  4. 对象

类的定义

Python学习-Day6-函数(三)、面向对象编程

class Student:

    def __init__(self,name,score):#self必须位于第一个参数
        self.name = name
        self.score = score
    def say_score(self):
        print("{0}的分数是{1}".format(self.name,self.score))

s1 = Student("Man",100)
s1.say_score()

Man的分数是100

构造函数 init()

Python学习-Day6-函数(三)、面向对象编程
Python学习-Day6-函数(三)、面向对象编程

实例属性

Python学习-Day6-函数(三)、面向对象编程

实例方法

Python学习-Day6-函数(三)、面向对象编程
Python学习-Day6-函数(三)、面向对象编程

  • 函数和方法的区别

Python学习-Day6-函数(三)、面向对象编程

  • 实例对象的方法调用本质
    Python学习-Day6-函数(三)、面向对象编程

  • 其他操作
    Python学习-Day6-函数(三)、面向对象编程

类对象

当解释器执行class语句时,就会创建一个对象。

class Student:

    def __init__(self,name,score):#self必须位于第一个参数
        self.name = name
        self.score = score
    def say_score(self):
        print("{0}的分数是{1}".format(self.name,self.score))

stu2 = Student
s1 = Student("Man",100)
s2 = stu2("Aan",200)
s1.say_score()
s2.say_score()

Man的分数是100
Aan的分数是200

类属性和类方法

类属性

类属性从属于“类对象”的属性,也称为“类变量”。
类属性定义方式:
class 类名:
类变量名 = 初始值

类方法

类方法是从属于“类对象”的方法。类方法通过装饰器@classmethod来定义
@classmethod
def 类方法名(cls [,形参列表]):
函数体
Python学习-Day6-函数(三)、面向对象编程

class Student:
    school = "uni"

    @classmethod
    def printschool(cls):
        print(cls.school)

Student.printschool()

uni

静态方法

与“类对象”无关的方法,称为“静态方法”
Python学习-Day6-函数(三)、面向对象编程

class Student2:
    school = "uni"

    @staticmethod
    def add(a,b):
        print("{0}+{1}={2}".format(a,b,(a+b)))
        return a+b

Student2.add(20,30)

20+30=50

类方法和静态方法中,不能调用实例变量、实例方法

__del__方法(析构函数)和垃圾回收机制

Python学习-Day6-函数(三)、面向对象编程

class Person:

    def __del__(self):
        print("销毁对象{0}",format(self))
p1 = Person()
p2 = Person()
del p2
print("程序结束")

销毁对象{0} <__main__.Person object at 0x0000024ED74056C8>
程序结束
销毁对象{0} <__main__.Person object at 0x0000024ED7405608>

__call__方法和可调用对象

定义了__call__方法的对象,称为“可调用对象”,即对象可以像函数一样被调用。

class SalaryAccount:
    def __call__(self, salary):
        print("算工资了")
        yearSalary = salary*12
        daySalary = salary//27.5
        hourSalary = daySalary//8
        return dict(yearSalary=yearSalary,monthSalary=salary,daySalary=daySalary,hourSalary=hourSalary)


s = SalaryAccount()
print(s(3000))

未经允许不得转载:作者:1026-徐同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Python学习-Day6-函数(三)、面向对象编程》 发布于2020-04-12

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录