linux:python:使用class变量
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
linux:python:使用class变量 [2020/09/12 16:09] – 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_inst = a('name_b' | + | a_inst = a('name_b0' |
- | a.print() # 调用class a的classmethod, 方法里有使用到class a的类变量。 | + | a.myprint() |
+ | |||
+ | # or | ||
+ | a.set_name(' | ||
+ | a.myprint() # 调用class a的classmethod, 方法里有使用到class a的类变量。 | ||
</ | </ | ||
linux/python/使用class变量.1599898167.txt.gz · 最后更改: 2023/03/17 10:12 (外部编辑)