python细节2

1 多继承的区别
两种调用父类方法的格式
01:父类名.父类方法(self)
02:super().父类方法()
多继承的情况下:
01会多次调用父类方法
02只调用一次父类方法
多继承时,使用super方法,对父类的传参数,必须把参数全部传递,
单继承时,使用super方法,只能传父类所需的方法

2 各种名词
类对象 : 存放类相关数据的一片空间
实例对象: 存放实例相关数据的一片空间
类属性:公共使用的属性
实例属性:属于每个对象私有的属性
实例方法:修改实例属性的,记录起来实例的空间地址 self,用实例名调用
类方法: 修改类属性,记录的类的空间地址 cls,用类名调用
静态方法: 不能修改任何属性,无参数


3 property属性的类属性方式定义

01:property属性:一种用起来像是使用实例属性一样的特殊属性,可以对应某个方法
例:

# ############### 定义 ###############
    class Foo:
    def func(self):
        pass

    # 定义property属性
    @property
    def prop(self):
        pass

    # ############### 调用 ###############
    foo_obj = Foo()
    foo_obj.func()  # 调用实例方法
    foo_obj.prop  # 调用property属性



02:三种@property装饰器
@property
def 方法名(self):
...
@方法名.setter
def 方法名(self, value):
...
@方法名.deleter
def 方法名(self):
...

调用:
实例对象.price
实例对象.price = 123
del 实例对象.price


03: property属性的第二种使用方式:类属性方式

class Goods(object):

        def get_price(self):
            print("get price...")
            return 100

        def set_price(self, value):
            """必须两个参数"""
            print("set price...")
            print(value)

        def del_price(self):
            print("del price")

        price = property(get_price, set_price, del_price, "相关描述...")



property方法中有个四个参数

第一个参数是方法名,调用 对象.属性 时自动触发执行方法
第二个参数是方法名,调用 对象.属性 = XXX 时自动触发执行方法
第三个参数是方法名,调用 del 对象.属性 时自动触发执行方法
第四个参数是字符串,调用 对象.属性.__doc__ ,此参数是该属性的描述信息

原文地址:https://www.cnblogs.com/zc2018/p/8835114.html