Python面向对象:闭包

Python面向对象:闭包,第1张

闭包 一、定义类二、创建和调用对象成员三、使用属性1、添加新属性2、获取属性值3、修改新属性4、删除属性5、判断属性是否存在或者属性是否有值6、查看对象或类的所有属性和方法 四、定义和调用方法五、self六、编程练习

一、定义类

Python中的数据类型都是类,类是组成P突然红程序的基本要素,它封装了一类对象的数据 *** 作。

定义类

class是什么类的关键字
“类名”是自定义的类名,采用大驼峰法命名。

二、创建和调用对象成员 创建对象:通过类创建对象的过程称为实例化。

语法 :
引用对象的变量名 = 类名([参数列表])

示例:
iphone = Phone()
pint(iphone)

结果:
<main.Phone object at 0x0000026A5F9CD808>

对象必须通过类创建获得,对象是一个具体的实实在在存在的事物,是数据和功能的集合。数据称之为对象的属性,功能称之为对象的方法。

访问对象成员

语法:
对象引用.成员

三、使用属性 1、添加新属性

语法:
对象.新属性名称 = 属性值

示例:
iphone.color = "土豪金"
iphone.brand = "华为"
2、获取属性值

语法:
对象.属性名称

print(iphone.color)
pring(iphone.brand)
#print(iphone.size) #不注释会报错,不能获取一个不存在的属性

结果:
土豪金
华为

3、修改新属性

语法:
对象.属性名称 = 新值

示例
iphone.color = "亮黑"
4、删除属性

语法:
del 对象.属性名称

示例
del iphone.brand # 删除属性
#del iPhone.price # 不注释会报错,删除一个不存在的属性
print(iphone.color)
print(iphone.brand) # 不注释会报错,该属性已被删除

结果:
亮黑

5、判断属性是否存在或者属性是否有值

语法:
hasattr(对象,“属性名称”)
返回值为bool型,返回True, 不存在返回False

示例
print(hasattr(iphone, 'color'))
print(hasattr(iphone, 'brand'))
print(hasattr(iphone, 'price'))

结果:
True
False
False

6、查看对象或类的所有属性和方法

语法:
dir(对象名或类名)

示例
print(dir(Phone)) # 打印类的属性和方法
print(dir(iphone)) # 打印对象的属性和方法
print(type(iphone)) # 打印对象的类型

结果
……
……,‘color’

完整实例
class Phone: #定义类
    pass
iphone = Phone() #创建对象
iphone.color = '土豪金' #添加属性
iphone.brand = ""
print(iphone.color)
print(iphone.brand)
#print(iphone.size) #不注释会报错,获取一个不存在的尺寸属性
iphone.color = "亮黑"
del iphone.brand # 删除属性
#print(iphone.brand)# 不注释会报错,该属性已被删除
#del iphone.price # 删除一个不存在的属性
print(hasattr(iphone,'color'))#判断iphone对象中是否存在color属性
print(hasattr(iphone, 'brand'))#判断iphone对象中是否存在brand属性
print(hasattr(iphone, 'price'))#判断iphone对象中是否存在price属性

print(dir(Phone)) # 打印类的属性和方法
print(dir(iphone)) # 打印对象的属性和方法
print(type(iphone)) # 打印对象的类型

四、定义和调用方法 调用方法

语法:
对象.方法名([实参列表])

虽然定义方法时设置第一个参数为self,但是调用方法时不要传递对应的self参数。方法可以被多次调用。

示例
# 创建对象
、iphone = Phone()
iphone.color = "土豪金"
iphone。brand = "华为"
# 调用方法
iphone.call() #调用call()
iphone.sendMsg() #调用sendMsg()

结果:
——打电话——,手机颜色为:土豪金
——发短信——,手机品牌为:华为

五、self

当某个对象调用其方法的时候,不需要传递self对象的实参。因为python解释器(环境)会自动将这个对象作为第一个实际参数传递给方法,所以开发者只需要在定义方法时“预留”第一个参数为self即可。

类的对象方法中存在的这个特色关键字self,标识当前对象,即调用该方法的对象。

在对象方法中可以通过self获取到调用该方法的对象,从而可以通过self *** 作对象上的属性和方法。

利用self可以在方法中给对象帝国一属性

六、编程练习

代码:
def cheers(a=0, b=0):
    x = a
    y = b
    def move(i, j):
        nonlocal x, y # 内部函数声明需要调用外部变量
        x += i
        y += j
        print("当前坐标{},{}".format(x, y))

    return move

ch = cheers(0, 0)
ch(1, 1)
ch(1, 3)

运行结果
当前坐标1,1
当前坐标2,4

较人性化一点的程序
chess = [0, 0]
ct = True
x, y = map(int, input().split())

def move():
    chess[0] += x
    chess[1] += y
    print(f"当前棋子所在位置{chess}")
move()
while ct:
    c = input("是否继续y/n:")
    if c == "y":
        x, y = map(int, input().split())
        move()
    else:
        print(f"棋子最终位置{chess}")
        break
可自由进行

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/990640.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存