# python自带的三个装饰器，python重要知识点总结一

1、@property

• 元类
• python 对象和类的绑定以致类措施，静态方法
• python 子类调用父类方法总计
• python 方法深入分析顺序M大切诺基Q
• python定制类和魔法方法
• 有关用法__slots__
• @property使用
• 修饰器

@property 修饰，正是将艺术，形成贰脾性能来使用。

#### 0、元类 image.png

``````class A():

@property
def pfunc(self):
return self.value

@pfunc.setter
def pfunc(self,value):
self.value = value

@property
def pfunc1(self):
print('this is property')

if __name__=="__main__":

A.pfunc = 9
print A.pfunc
A.pfunc1
``````

#### 1、python 对象和类的绑定以致类格局，静态方法

self 和 cls

``````>>>class Test:
...    def func(self, message):
...        print message
...
>>>object1=Test()
>>>x=object1.func
>>>x('abc')
abc
>>>t=Test.func
>>>t(object1,'abc')
abc
``````

method func() must be called with Test instance as first argument (got

##### 参照学习

1、类私下认可的章程都以绑定对象的，而self参数也是指向该目的，未有实例化对象时，类中艺术调用会出错，也事关到python自动传送self参数。
2、若想不实例化而一向通过 类名.方法

``````>>> class Foo(object):
...     @classmethod                #定义类方法要点1
...     def foo(cls):               #定义类方法要点2
...             print 'call foo'
...
>>> Foo.foo()
call foo
>>> Foo().foo()
call foo
``````

``````class pizza(object):
@classmethod
``````

``````class pizza(object):
def __init__(self,ingre):
self.ingre = ingre

@classmethod
def from_other(cls,fridge):
return cls(fridge.juice()+fridge.cheese())
def get_ingre(self):
return self.ingre
``````

cls代表此类，cls()也是用来创立对象，和pizza(fridge.juice()+fridge.cheese())效果等同。待精晓，工厂方法是什么？
3、若只想当成一个不足为道函数，定义不带有self和cls，则足以行使静态方法，如下：

``````>>> class Foo(object):
...     @staticmethod
...     def foo():
...             print 'call foo'
...
>>> Foo.foo()
call foo
>>> Foo().foo()
call foo

``````

2、@classmethod
修饰类的不二法门

#### 2、python 子类调用父类方法总括

talk is weak，从程序开始：

``````class Person(object):
def __init__(self):
self.name = "Tom"
def getName(self):
return self.name

class Student(Person):
def __init__(self):
self.age = 12
def getAge(self):
return self.age

if __name__ == "__main__":
stu = Student()
print stu.getName()

`````` image.png

1、super方法

``````class Base:
def __init__(self):
print('Base.__init__')

class A(Base):
def __init__(self):
# super().__init__()
super(A,self).__init__()
print('A.__init__')

class B(Base):
def __init__(self):
# super().__init__()
super(B,self).__init__()
print('B.__init__')

class C(A,B):
def __init__(self):
# super().__init__()  # Only one call to super() here  python3
super(C,self).__init__()
print('C.__init__')
``````

``````>>> c = C()
Base.__init__
B.__init__
A.__init__
C.__init__
>>>
``````

2、调用未绑定的父类构造方法

``````class Person(object):
def __init__(self):
self.name = "Tom"
def getName(self):
return self.name

class Student(Person):
def __init__(self):
Person.__init__(self)
self.age = 12
def getAge(self):
return self.age

if __name__ == "__main__":
stu = Student()
print stu.getName()

``````

#### 3、python 方法深入分析顺序

###### 参考 image.png

python解析顺序的规范化也是贰个相连前行的长河，重要有以下三个品级：

• 2.2事先的经文类。卓绝类中多三回九转方法剖判采取深度优先从左到右找寻，即D-B-A-C-A，也正是说精粹类中只选择A的show方法。
• 经文类对单层承接未有啥难点，可是对上述来讲，大家总来说之更乐于使用C的show方法，因为她是对A的具体化，不过卓越类比并不能够兑现，于是在2.第22中学引进新式类（继承自object），它还是选用从左至右的纵深优先遍历，不过大器晚成旦遍历中冒出重复的类，只保留最后二个。并且在定义类时就计算出该类的
MRO 并将其看做类的习性。由此最新类能够向来通过 mro 属性获取类的
MRO。
比方： image.png

object]，重复类只保留最后三个，因而产生 [D, B, C, A, object]

__ C3 算法__。

``````class A():
def func(self,x,y):
return x * y

@classmethod
def cfunc(cls,x,y):
return x * y

if __name__=="__main__":
print A().func(5,5)
print A.cfunc(4,5)
``````
###### C3 MRQ

L[C] 的头，别的成分 [C2,…,CN] 称为尾。假若八个类 C 传承自基类
B1、B2、……、BN，那么大家能够依据以下两步计算出 L[C]：
1、L[object] = [object]
2、L[C(B1…BN)] = [C] + merge(L[B1]…L[BN], [B1]…[BN])

H，继续该手续。 image.png image.png

3、@staticmethod
修饰类的章程
{"ft_lang_label":"__label__zh","ft_lang_prob":0.59543973,"math_prob":0.91044956,"size":5135,"snap":"2020-34-2020-40","text_gpt3_token_len":3135,"char_repetition_ratio":0.13213798,"word_repetition_ratio":0.15777262,"special_character_ratio":0.2788705,"punctuation_ratio":0.20112994,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.95447046,"pos_list":[0,1,2,3,4,5,6,7,8,9,10,11,12],"im_url_duplicate_count":[null,1,null,1,null,1,null,1,null,1,null,1,null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2020-09-26T14:25:16Z\",\"WARC-Record-ID\":\"<urn:uuid:9cf2fd83-da5a-4f84-a3c9-4cfe375169e5>\",\"Content-Length\":\"71887\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:b74cab0b-46a1-4190-bc7f-cd2934013877>\",\"WARC-Concurrent-To\":\"<urn:uuid:c68dcc72-fce3-480b-a1fa-e3576fe208d0>\",\"WARC-IP-Address\":\"45.199.63.189\",\"WARC-Target-URI\":\"http://www.maizibooks.com/archives/2639.html\",\"WARC-Payload-Digest\":\"sha1:ISAN4OAABVQB63CFOV2EUN7IVUXONJCE\",\"WARC-Block-Digest\":\"sha1:KYD5PNPY4Y6CSXR5XD4GEOBB67RMSJRI\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2020/CC-MAIN-2020-40/CC-MAIN-2020-40_segments_1600400244231.61_warc_CC-MAIN-20200926134026-20200926164026-00575.warc.gz\"}"}