python 面向对象

类是一系列方法与属性的抽象封装的一个集合体
面向对象的封装就体现在类里。
继承是一个子类继承父类的属性或者方法,但是无法继承父类的__get 双下划线方法,这是类似私有方法
继承


class Message():
    def __init__(self):
        pass
    def send_msg(self):
        print("send msg")

class subMsg(Message):
    def sendmsg(self):
        self.send_msg()
        print("子类方法")

多态:同一个函数传入不同对象执行同一个方法

class Duck():
    def eat(self):
        print("duck eat")
class Lion():
    def eat(self):
        print("lion eat")

def Eat(obj):
    obj.eat()
if __name__ == '__main__':
    duck  = Duck()
    lion = Lion()
    Eat(duck)
    Eat(lion)
class TestProperty():
	def __init__(self):
		self.x = 100
	def getPro(self):
		return self.x
	
	def setPro(self,value):
		self.x = value
	
	def delPro(self):
		print("delete")
	x = property(getx,setx,delx,"I am your father")
obj = TestProperty()
obj.x #执行这个getx
obj.x = 123 #调用set函数
print(obj.x)
del obj.x

执行结果如下

100 xxx
set
123
delete

在创建了这个property的对象后,默认obj.x #执行这个getx
obj.x = 123 #调用set函数 del obj.x执行del函数

类的 getitem. setitem

class Student():
	def __setitem__(self, key, value):
	        print(key,value)
	
	def __getitem__(self, item):
	        print(item)
	        

s1 = Student()
#加了__getitem__. setitem 会支持如下操作
s1[“hello”] = ‘world’
print(s1[“hello”])

init() new
#创建对象首先调用__new__创建一个空对象,然后通过这个init进行初始化操作。
对象加括号会调用__call__方法

__enter__ 执行with时触发,返回值给as
__exit__ 退出with执行
with fileTest as t:
	t.cusor()

比如在enter中创建数据库连接句柄,在exit中关闭

class FileTest():
    def __enter__(self):
        print("")
        sql_conn = "数据句柄"
        return sql_conn

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("db close")
        print("exit")
 

hasattr(obj,"attr") setattr(obj,"attr")
getattr(obj,"attr")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值