11_6 Python高级
Posted fandx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11_6 Python高级相关的知识,希望对你有一定的参考价值。
多继承以及MRO顺序
- 多继承的注意事项:
- 多继承在类中定义多个同名的方法,会自动覆盖之前定义的方法
- 查看MRO顺序的方法:
- 类名.__mro__(返回一个元组格式的MRO顺序)
- 类名.mro()(返回一个列表格式的MRO顺序)
- 多继承中调用父类的几种方法
- 类名.方法(指定调用哪个类的方法)
- super(类名,self).方法
- 类名和self可以不指定
- 默认以当前的类传入
- 这个方式可以按照MRO顺序调用上一级的指定的方法
*args和**args作用
- *args的作用
- 将传递的实参多余的参数以元组的方式传递到函数或者方法中
- **args的作用
- 将传递多余的指定参数以字典的方式传递到函数或者方法中
面向对象高级
- 类对象
- 创建一个类的时候就会创建一个类对象,类名就是类对象
- 类属性在内存中只保存一份数据
- 实例属性每一个对象都对单独保存一份
property属性
- 概念:
- 定义一个方法但是使用装饰器property,只可以有一个self形参
- 可以用这样的属性动态的获取属性的值
- 定义方式(经典类)
class Fun():
@property
def size(self):
return 100
fun = Fun()
print(fun.size)
100
- 定义方式(新式类)
class Fun():
def __init__(self):
self.num = 0
@property
def price(self):
print("get @property")
return self.num
@price.setter
def price(self, value):
self.num = value
print("set @price.setter")
@price.deleter
def price(self):
print("del @price.deleter")
obj = Fun()
print(obj.price) # 可以获取价格,调用property装饰器
obj.price = 100 # 修改价格,调用price.setter装饰器
del obj.price # 删除价格,调用price.deleter装饰器
get @property
0
set @price.setter
del @price.deleter`
- 使用property方法来创建property属性
可以使用proerty来替代原有的封装的set和get方法
#coding=utf-8
class Foo(object):
def get_bar(self):
print("getter...")
return "laowang"
def set_bar(self, value):
"""必须两个参数"""
print("setter...")
return ‘set value‘ + value
def del_bar(self):
print("deleter...")
return "laowang"
BAR = property(get_bar, set_bar, del_bar, "description...")
obj = Foo()
obj.BAR # 自动调用第一个参数中定义的方法:get_bar
obj.BAR = "alex" # 自动调用第二个参数中定义的方法:set_bar方法,并将“alex”当作参数传入
desc = Foo.BAR.__doc__ # 自动获取第四个参数中设置的值:description...
print(desc)
del obj.BAR # 自动调用第三个参数中定义的方法:del_bar方法
元类type
- 元类创建类对象,类对象创建实例对象
- 元类是所有类的祖宗类
以上是关于11_6 Python高级的主要内容,如果未能解决你的问题,请参考以下文章