Python基础知识(Day 7)——函数、类、对象学习

嵌套函数(内部函数)

        嵌套函数:

                在函数内部定义的函数!

nonlocal 关键字

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

        global 用来声明全局变量。

LEGB 规则

Python 在查找“名称”时,是按照LEGB 规则查找的:

        Local-->Enclosed-->Global-->Built in

Local 指的就是函数或者类的方法内部

Enclosed 指的是嵌套函数(一个函数包裹另一个函数,闭包)

Global 指的是模块中的全局变量

Built in 指的是Python 为自己保留的特殊名称。

第 6 章(1)  面向对象初步

        面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,从而大大提高了编程的效率。

面向过程:Procedure Oriented

面向对象:Object Oriented

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("Winey",20)
s1.say_score()


Winey的分数是:20

  init  构造方法和  new  方法

        一个 Python 对象包含如下部分

  1. id(identity 识别码)
  2. type(对象类型)
  3. value(对象的值)
    1. 方法(method)
    2. 属性(attribute)

实例属性和实例方法

实例属性

  1. 实例属性一般在 init ()方法中通过如下代码定义: self.实例属性名 = 初始值
  2. 在本类的其他实例方法中,也是通过 self 进行访问: self.实例属性名
  3. 创建实例对象后,通过实例对象访问:
    1. obj01 = 类 名() #创建对象,调用  init ()初始化属性
    2. obj01.实例属性名 = 值 #可以给已有属性赋值,也可以新加属性
  • 其他操作:
  1. dir(obj)可以获得对象的所有属性、方法
  2. obj.  dict__ 对象的属性字典
  3. pass 空语句
  4. isinstance(对象,类型) 判断“对象”是不是“指定类型”

类属性

类方法

类方法是从属于“类对象”的方法。类方法通过装饰器@classmethod 来定义,格式如下:         @classmethod

        def 类方法名(cls [,形参列表]) :

                函数体

静态方法

静态方法通过装饰器@staticmethod 来定义,格式如下:

         @staticmethod

        def 静态方法名([形参列表]) :

                函数体

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

class Person:

    def __del__ (self):
        print("销毁对象:{0}".format(self))

p1 = Person()
p2 = Person()
del p2
print("程序结束")


销毁对象:<__main__.Person object at 0x00000179A3D4EFA0>
程序结束
销毁对象:<__main__.Person object at 0x00000179A3D4EFD0>

  call  方法和可调用对象

class SalaryAccount:
    """计算工资"""
    def __call__(self, name, salary):
        print("发工资啦")
        yearSalary = salary*12
        daySalary = salary//22.5
        hourSalary = daySalary//8

        return dict(name=name,yearSalary=yearSalary,
                    monthSalary=salary,daySalary=daySalary,hourSalary=hourSalary)
a = SalaryAccount()
print(a("团子",30000))

发工资啦
{'name': '团子', 'yearSalary': 360000, 'monthSalary': 30000, 'daySalary': 1333.0, 'hourSalary': 166.0}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值