python中实例方法与实例属性-Python_类和实例属性的增删改查操作

类的属性都是存放在字典中,所以对类或实例的属性进行操作实际上就是对字典的操作。

类的属性相关操作

如下图:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

代码块如下:

class Door():

"门的类"

address = "浙江省杭州市"

def __init__(self,size,color,type):#构造函数

"初始化门的数据"

self.size = size

self.color = color

self.type = type

def open(self):

"门打开的方法"

print("这个%s门打开了" %self.type)

def off(self,time):

"门关闭的方法"

print("这个%s门关闭了,时间为;%s" %(self.type,time))

#####查看类的属性#####

print(Door.__dict__)

print(Door.address)

#####增加类的属性#####

#增加一个生产日期(time)数据属性

Door.time = "2018-04-25 23:55:00"

print(Door.__dict__)

print(Door.time)

#增加一个函数属性

def fun(seif,name):

"谁在前门"

print("%s在boomboom敲门了"%name)

Door.add = fun #函数内存地址的映射

#查看

print(Door.__dict__)

#调用类的属性

#实例化

door1 = Door(16, 'red', '木门')

#实例中调用新增的数据属性

print(door1.time)

#实例中调用新增的函数属性

print(door1.add('zhouzhou'))

#####删除类的属性#####

#删除类的生产日期(time)数据属性

del Door.time

print(Door.__dict__)

#删除类的add函数属性

del Door.add

print(Door.__dict__)

# 实例化

door2 = Door(16, 'red', '木门')

#实例中调用新增的函数属性

# print(door2.time) #报错,没有该数据属性

#实例中调用新增的add函数属性

# print(door2.add) #报错,没有该函数属性

#####修改类的属性#####

#修改类的数据属性

Door.address = "湖北省武汉市"

print(Door.__dict__)

print(Door.address)

#修改类的函数属性

def modify():

print("这是更改后的函数")

#更改类的open属性

Door.open = modify #函数内存地址的更改,导致执行的函数也对应进行了更改

print(Door.__dict__)

#调用类更改后的函数属性

Door.open()

#实例化

door3 = Door(16, 'red', '木门')

#实例中调用类修改的数据属性

print(door3.address)

#实例中调用类修改的函数属性

print(door3.open)

door3.open() #报错,因为实例化的对象在调用类的函数时,均会带上参数self但此处并不需要实参

2.实例的属性相关操作

如下图:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

代码块如下:

class Door():

"门的类"

address = "浙江省杭州市"

def __init__(self,size,color,type):#构造函数

"初始化门的数据"

self.size = size

self.color = color

self.type = type

def open(self):

"门打开的方法"

print("这个%s门打开了" %self.type)

def off(self,time):

"门关闭的方法"

print("这个%s门关闭了,时间为;%s" %(self.type,time))

#实例

door1 = Door(16, 'red', '木门')

#####查看实例的属性#####

print(door1.__dict__)

print(door1.size)

#####增加实例的属性#####

#增加实例的宽度属性

door1.width = 180

#实例查看新增的属性

print(door1.__dict__)

print(door1.width)

#类中查看是否含有该属性

print(Door.__dict__)

# print(Door.width) #报错,类中没有改属性--即:实例一定可以访问类的属性,类不一定能访问实例的属性

#其他实例访问

door2 = Door(23, 'white', '铝合金')

# print(door2.width) #报错,width属性只是在实例door1中存在,不在类中存在,更不会在实例door2中存在

#增加一个函数属性

def test():

print("这是一个测试方法")

door1.add = test

door1.add()

#####删除实例的属性#####

#删除实例中的宽度属性

del door1.width

print(door1.__dict__)

# print(door1.width) #报错,已经没有宽度属性了

#删除实例中的"函数’属性

del door1.add

door1.add() #报错,已删除,不存在该属性了

#####修改实例的属性#####

#修改数据属性

door1.size =100

print(door1.size)

#修改函数属性

def boom():

print("boom boom!!有人在敲门")

door1.open = boom #更改了方法对应的内存地址,也就更改了函数的内容

print(Door.__dict__)

door1.open()

有意思的事

见下图:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

该部分代码块如下:

class Door():

"门的类"

address = "浙江省杭州市"

def __init__(self,size,color,type):#构造函数

"初始化门的数据"

self.size = size

self.color = color

self.type = type

def open(self):

"门打开的方法"

print("这个%s门打开了" %self.type)

def off(self,time):

"门关闭的方法"

print("这个%s门关闭了,时间为;%s" %(self.type,time))

door1 = Door(16, 'red', '木门')

print("实例数据属性中没有address,向类属性中找address属性,address=",door1.address)

print("直接调用类中的address属性,address=",Door.address)

#在实例中增加了一个address属性

door1.address = "湖北省武汉市"

print("因为现在实例中有了address,所以可以直接调用,address=",door1.address)

print("此处仍然是调用Door类中数据属性,和实例无关,address=",Door.address)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值