Writing /share/Web/wiki/data/cache/8/8b8addd2084b5707eb839fbab2709750.metadata failed
linux:python:使用class变量
差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| linux:python:使用class变量 [2020/09/12 16:08] – zhangguo | linux:python:使用class变量 [2023/03/17 10:12] (当前版本) – 外部编辑 127.0.0.1 | ||
|---|---|---|---|
| 行 7: | 行 7: | ||
| 但是这种场景如果需要需要先调一个实例化的底层变量,然后包进当前的class以classmethod的方式进行使用,此时就需要把这个实例化的底层变量以class 变量的方式存在,不然这个实例化信息无法传递到class method那。 | 但是这种场景如果需要需要先调一个实例化的底层变量,然后包进当前的class以classmethod的方式进行使用,此时就需要把这个实例化的底层变量以class 变量的方式存在,不然这个实例化信息无法传递到class method那。 | ||
| + | 下面这个例子,class a总是以classmethod的方式进行function的调用,其中class a里面的方法需要用到class b,而class b必须首先要实例化之后才能使用。下面说明了2种方式来达到目的。 | ||
| - | 举例: | + | - class b在class a实例化时进行赋值,之后class a一直以classmethod的方式使用。 |
| + | - class b的实例化在class a的一个classmethod方法中完成,class a的方法总是以classmethod的方式进行使用。< | ||
| <code python> | <code python> | ||
| 行 14: | 行 16: | ||
| def __init__(self, | def __init__(self, | ||
| self.name = name | self.name = name | ||
| - | def print(self): | + | def myprint(self): |
| print(f' | print(f' | ||
| 行 20: | 行 22: | ||
| b_inst = None | b_inst = None | ||
| def __init__(self, | def __init__(self, | ||
| - | a.b_inst = b(name) | + | a.b_inst = b(name) |
| + | | ||
| + | @classmethod | ||
| + | def set_name(cls, | ||
| + | a.b_inst = b(name) | ||
| + | | ||
| @classmethod | @classmethod | ||
| - | def print(cls): | + | def myprint(cls): |
| - | a.b_inst.print() | + | a.b_inst.myprint() |
| | | ||
| | | ||
| if __name__ == ' | if __name__ == ' | ||
| - | | + | |
| - | a.print() # 调用class a的classmethod, 方法里有使用到class a的类变量。 | + | |
| + | |||
| + | # or | ||
| + | a.set_name(' | ||
| + | | ||
| </ | </ | ||
linux/python/使用class变量.1599898101.txt.gz · 最后更改: 2023/03/17 10:12 (外部编辑)