定义类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'))
6、查看对象或类的所有属性和方法结果:
True
False
False
示例语法:
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
可自由进行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)