面向对象中的方法(装饰器的应用)

### 面向对象中的方法

"""
普通方法:  可以有参数,或者无参数,当场正常的函数调用
绑定方法:  (1) 绑定到对象(自动传递参数为对象) (2) 绑定到类(自动传递参数为类)
静态方法:  无论是对象还是类,都可以调用,不会默认传递任何参数
"""

class Dog():
	name = "旺财"

	# 普通方法
	def jiao():
		print("小狗哇哇哇的叫唤")
	
	# 绑定方法(对象)
	def eat(self):
		print("小狗喜欢吃骨头")
	
	# 绑定方法(类)
	@classmethod
	def tail(cls):
		print(cls)
		print("小狗看到主任喜欢摇尾巴")
	
	#静态方法
	@staticmethod
	def jump(num):
		print("小狗喜欢接飞盘")

obj = Dog()
普通方法 (无参方法只能类调用)
obj.jiao() error
Dog.jiao() 
绑定方法 (一般用对象调用)
obj.eat()  #(推荐)
Dog.eat(12356)
绑定方法(类) 
"""系统自己把类当成参数进行传递"""
Dog.tail() #(推荐)
obj.tail()
静态方法 (不会默认传递任何参数,如果有参数,当成普通方法调用即可.)
obj.jump(1)
Dog.jump(2)
在类外,为对象添加成员方法,默认皆是静态方法.
obj.func = lambda  : print(123)
obj.func()

### property

"""
property 可以把方法变成属性使用
作用: 控制属性的获取,设置,删除操作,
变相的增加成员的安全性.可以通过自定义逻辑对成员进行控制

自动触发: 要求:是同一个名字
	获取 @property
	设置 @属性名.setter
	删除 @属性名.deleter

"""

方法一

class MyClass():
	def __init__(self,name):
		self.name = name
	
	@property
	def username(self):
		return self.name
		# pass
	
	@username.setter
	def username(self,val):
		print(112233)
		val = "朴仁猛"
		self.name = val
		# pass

	@username.deleter
	def username(self):
		# 如果发现有删除行为,可以在这个方法中拒绝删除
		# pass
		del self.name

	
obj = MyClass("小芳")
获取属性 (自动触发获取方法 @property)
print(obj.username())
print(obj.username)
设置属性 (自动触发设置方法) val形参自动接收设置的值
obj.username = "朴仁猛"
print(obj.username)
删除属性
del obj.username
print(obj.username) error

方法二

class MyClass():
	def __init__(self,name):
		self.name = name
	
	# 获取
	def get_username(self):
		return self.name

	
	# 设置
	def set_username(self,val):
		# val = "朴仁猛"
		self.name = val


	# 删除
	def del_username(self):
		# 如果发现有删除行为,可以在这个方法中拒绝删除
		del self.name
	
	# 顺序必须按照  获取 -> 设置 -> 删除 的参数进行传递
	username = property(get_username,set_username,del_username)
	
obj = MyClass("朴飘乐")
# 获取
print(obj.username)
# 设置
obj.username = "朴一生"	
print(obj.username)
# 删除
del obj.username
print(obj.username) #error 被删掉了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象设计方法设计模式是一种常用的解决问题的方法,它提供了一些经过验证的、可重用的解决方案。设计模式的应用可以大大提高软件开发的效率和质量。 设计模式分为三种类型:创建型模式、结构型模式和行为型模式。每种模式都有其特定的应用场景和解决问题的方法。 在创建型模式,最常用的是工厂模式,它可以帮助我们避免在代码直接使用 new 关键字创建对象,从而降低代码的耦合度。同时,工厂模式还可以通过多态的方式为客户端提供一个统一的接口,隐藏了具体对象的实现细节。 在结构型模式,最常用的是适配器模式和装饰器模式。适配器模式可以帮助我们将两个不兼容的接口进行适配,从而实现它们之间的互通。而装饰器模式可以在不改变原有对象的基础上,动态地为对象添加新的功能。 在行为型模式,最常用的是观察者模式和策略模式。观察者模式可以帮助我们实现对象之间的松耦合,当一个对象发生变化时,它可以通知所有的观察者,从而保证系统的响应能力。而策略模式则可以帮助我们实现不同的算法实现之间的切换和动态选择,从而提高系统的灵活性和可维护性。 总之,设计模式的应用可以大大提高软件开发的效率和质量,但是在实际应用需要根据具体的场景选择适当的模式,并且在代码进行适当的封装和抽象,以实现系统的可维护性和扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值