栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础6 面向对象 嵌套函数 类相关

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础6 面向对象 嵌套函数 类相关

目录

嵌套(内部)函数

nonlocal关键字

LEGB规则

面向对象编程(object oriented)

面向过程思维(procedure oriented)

类的定义

构造函数__init__()

实例属性

实例方法

 dir(s1) 可以获得所有属性、方法

print(s2.__dict__)  获得我们定义的属性

print(isinstance(s1,Student))  判断是不是这个类的对象

类属性

 类方法

 静态方法

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

__call__方法和可调用对象


嵌套(内部)函数

在函数内部定义的函数,只服务于这个函数

1.用于封装隐藏

2.降低重复代码

3.闭包

nonlocal关键字

用来声明外层的局部变量

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

LEGB规则

local 方法内部

Enclosed 嵌套函数

Global 全局变量

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

str="global str"

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

面向对象编程(object oriented)

适合大规模程序,设计者思维,例如造车

支持基本功能,继承,多态,封装

面向过程思维(procedure oriented)

按步骤,适合不复杂的问题,例如开车

类的定义

对象比作饼干   类就是“模具”,类把方法和属性整合到一起

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("gg",18)
s1.say_score()

构造函数__init__()

1.名字固定,第一个参数固定是 self(可以改成s但没必要)

通过类名调用构造器,见上一个例子

实例属性

self.实例属性名=初始值

外部访问   s1.age=32  内存会把这一条加上,如果再创建一个s2 是没有age这一条属性的

实例方法

从属于实例对象的方法

用来操作实例属性的

 dir(s1) 可以获得所有属性、方法

print(s2.__dict__)  获得我们定义的属性

print(isinstance(s1,Student))  判断是不是这个类的对象

类属性

注意  类属性   实例属性   实例方法  的内涵

 方法和类属性都加载到类 一堆

实例属性加载到类对象里

 类方法

从属于类对象的方法,用来操作类属性的

@classmethod

def 类方法名(cls,)

class Student:
    company="sss"
    @classmethod
    def printCompany(cls):

        print(cls.company)
Student.printCompany()

 静态方法

定义与“类”对象无关的方法,与在模块中定义普通函数没有区别,静态方法放在了类的名字空间里,需要通过类来调用

@staticmethod

静态方法访问实例属性和实例方法会导致错误

class Student:
    company="sss"
    @staticmethod
    def add(a,b):

        print("{0}+{1}={2}".format(a,b,a+b))
Student.add(20,30)

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

用于实现对象被销毁时所需的操作

当对象没有被引用(引用计数=0),垃圾回收器调用__del__()方法

class Person:
    def __del__(self):
        print("销毁对象{0}".format(self))
p1=Person()
p2=Person()
del p2
del p1
print("over")

__call__方法和可调用对象

函数调用本质用的是call方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977062.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号