diff --git "a/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" "b/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" index a2feb0ca2f1b5e804d7b92d3410bc62632d1fb31..3d8e28bfcd51f36e736a19990f3cd25966b14cb4 100644 --- "a/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" +++ "b/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" @@ -438,7 +438,7 @@ new_exception.__cause__ = chained_exception [pep-0409](https://peps.python.org/pep-0409/) -# 3 参数与返回值 +# 3 类与方法 ## 规则3.1 __init__函数不应该有显示返回值(python:S2734) 在python中,__init__函数是一个特殊的方法,用于在创建类的实例时进行初始化操作。它没有显示的返回值,而是隐式的返回新创建的实例对象。 @@ -554,6 +554,30 @@ new_exception.__cause__ = chained_exception read_param=param param=1 print(strings,read_param) +## 规则3.4 实例和类的方法应该至少有一个参数(python:S5719) +每个实例方法都应该至少有一个参数,这个参数将引用调用该方法的对象实例。调用一个没有参数的实例方法将引发TypeError异常。按照惯例,实例方法的第一个参数通常命名为self。类方法,即使用@classmethod修饰的方法,也至少需要一个参数。不同的是这个参数将引用类本身,而不是类的实例对象。按照惯例,类方法的第一个参数通常命名为cls。请注意,__new__和__init_subclass__将类作为第一个参数,即使它们没有用@classmethod修饰。 + +### 错误代码 + class MyClass: + def instance_method(): # Noncompliant. "self" parameter is missing. + print("instance_method") + + @classmethod + def class_method(): # Noncompliant. "cls" parameter is missing. + print("class_method") +### 正确代码 + class MyClass: + def instance_method(self): + print("instance_method") + + @classmethod + def class_method(cls): + print("class_method") + + + @staticmethod + def static_method(): + print("static_method") # 4 控制流