2020-11-12 类,对象,属性,使用方法

1411-李同学

发表文章数:148

热门标签

首页 » Python » 正文

一、嵌套函数在函数内部定义的函数

def f1():
    print("1")
    def f2():
        print("2")
    f2()

#f1()


def ChineseName(name,famliyName):
    print("{0} {1}".format(famliyName,name))

def EnglishName(name,famliyName):
    print("{0} {1}".format(name,famliyName))


def printName(isChinese,name,familyName):
    def inner_print(a,b):
        print("{0} {1}".format(a,b))

    if isChinese:
        inner_print(familyName,name)

    else:
        inner_print(name,familyName)


printName(False,"xuan","li")

二、nonlocol关键字

1、概念

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

global 用来声明全局变量

2、测试

def outer():
    b=10
    a=1000

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


        global a
        a=1000

    inner()
    print("outer:",b)

outer()
print("a:",a)

三、LEGB规则

1、概念:在查重名称时,按照local enclosed global built in 顺序查找

local:方法内部

enclosed:嵌套函数

global:全局变量

built in:特殊名称

其实就是由里到外查找

str="global"

def outer():
    #str="outer"


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

    inner()


outer()

四、面向对象编程

1、面向对象和面向过程的区别

1)面向过程更加关注的是程序逻辑流程

2)面向对象关注的是软件中对象之间的关系,适合大规模的程序

2、面向对象思考方式:

遇到复杂问题,先从问题中找名词,确立类,根据需求确定类的属性和方法,确定类之间的关系。

五、对象的进化

1、说明:随着编程面临的问题越来越复杂,语言也在进化。从主要处理简单数据开始,随着数据变多进化“数组”,数据类型变复杂,进化出了结构体,处理数据的方式和逻辑变复杂,进化出了对象。

数据:1,2,3

数组:(1,2,3)

结构体:包含了类别

对象

六、类的定义

1、类的结构:属性+方法

属性:数据对应的状态

方法:函数行为对应了行为

2、定义类示例

class Student:
    def __init__(self,name,age):
    #构造方法
        self.name=name
        self.age=age


    def score(self):
        print("{0}的分数是:{1}".format(self.name,self.age))


s=Student("lixuan",24)
s.score()

七、构造函数

1、对象的组成:id,type,value

2、构造函数用于执行实例对象的初始化工作,即对象创建后,初始化当前对象的属性。

八、实例属性

1、概念:实例属性是属于实例对象的属性,也成为实例变量。

2、实例方法

class Student:
    def __init__(self,name,age):
    #构造方法
        self.name=name
        self.age=age


    def score(self):
        print("{0}的分数是:{1}".format(self.name,self.age))


s=Student("lixuan",24)
s.score()


s.age=32
s.salary=3000
print(s.salary)
s1=Student("JAMES",36)
print(s1.name,s1.age)

九、实例方法

1、要定义一个实例方法,第一个参数必须为self,self指当前实例对象

2、调用实例方法时,不需要也不能给self传参,self由解释器自动传参

3、函数和方法的区别:

1)都是用用来完成一个功能的语句块,本质一样

2)方法调用时,通过对象来调用,函数没有这个特点。

3)方法需要传递self,函数不需要

4、dir(object)可以获得对象的所有属性,方法

5、obj.__dict__对象的属性字典。

6、pass语句

class Student:
    def __init__(self,name,age):
    #构造方法
        self.name=name
        self.age=age


    def score(self):
        print("{0}的分数是:{1}".format(self.name,self.age))


s=Student("lixuan",24)
s.score()


s.age=32
s.salary=3000
print(s.salary)
s1=Student("JAMES",36)
print(s1.name,s1.age)
print(dir(s1))
print(s1.__dict__)

十、类对象

1、class 类名:会创造一个类对象

class student:
    pass
print(id(student))
print(type(student))

十一、类属性

1、概念:从属于类对象的属性,也成为类变量。可以被所有实例对象共享。实例在__init__构造函数中,类属性在class下直接添加,无需定义在函数下。

2、示例:

class student:
    company="tencent"
    #类属性
    def __init__(self,name,age):
        self.name=name
        self.age=age
        #实例属性

十二、类方法

1、格式:

@classmethod

def 类方法名(cls):

        函数体

2、要点:

1)classmethod必须位于方法上面一行

2)第一个cls必须有,指的是类对象本身

3)调用方法通过类名.类方法名调用

3、测试:

class student:
    company="tencent"
    #类属性
    def __init__(self,name,age):
        self.name=name
        self.age=age
        #实例属性

    @classmethod
    def printCompany(cls):
        print(cls.company)

student.printCompany()

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

十三、静态方法

1、允许定义与类对象无关的方法,成为静态方法。

2、与普通函数没有区别

3、格式

@staticmethod

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

       函数体

十四、__del__析构函数

1、作用:销毁对象

2、也可以通过del语句删除对象。

3、python会自动提供__del__方法,不需要自定义析构方法。

4、示例:

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

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

15、call()方法

1、功能:定义了方法的对象,成为可调用对象,可以像调用函数一样被调用

2、测试

#测试可调用方法__call__()

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




s=SalaryAccount()
print(s(30000))
标签:

未经允许不得转载:作者:1411-李同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《2020-11-12 类,对象,属性,使用方法》 发布于2020-11-12

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

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

支付宝扫一扫打赏

微信扫一扫打赏

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

登录

忘记密码 ?

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

Q Q 登 录
微 博 登 录