Pythonのクラスとメソッド

1. Pythonのクラスには、厳格なルールはありません。たとえば、Javaのように、すべてのクラスは.classで終わりますが、.pyで終わります。

class testClass:
    def setModels(self,name,age):
        self.age = age;
        self.name = name;

2. pythonのクラスのメソッドにはデフォルト値が必要です。そうでない場合、エラーが報告されます。

class testClass:
    def setModels(self,name,age):
        self.age = age;
        self.name = name;

3. Pythonには、Javaの静的定数に似たクラス属性があります。

class testClass:
    testClassName = "我是python的类属性,可以直接通过类名点我得到我";
    print(testClass.testClassName)

4. Pythonの構築メソッドは、メソッドのオーバーロードをサポートしていません。メソッドのオーバーロードは1つだけです。Pythonの構築メソッドのデフォルトは_init__であることに注意してください。

class testClass:
     def __init__(self,a,b):
         print("我是python的构造方法");

5. Pythonでは、構築方法はマルチパラメーター送信の柔軟な方法として定義できます。

class testClass:
    #定义灵活的可传递任何数据的构造方法
    def __init__(self,**map):
        print("我是python的构造方法" + map.get("name"));
        print("我是python的构造方法" + map.get("age"));

6. Pythonのクラス変数は、オブジェクトをインスタンス化することでアクセスできますが、Javaはアクセスできません。

class testClass:

    testClassName = "我是python的类属性,可以直接通过类名点我得到我";

from src.test.test import test
from src.testClass.testClass import testClass

if __name__ == '__main__':
    # testObject = test();
    # testObject.testClassFunction();

    testClassA = testClass();
    print("测试实例化对象访问类变量".format(testClassA.testClassName));

7. Pythonでインスタンス化されたオブジェクトのクラス変数を変更しても、クラス変数は変更されません。これは理解が難しい場合があります。次のコードは次のことを示しています。

from src.test.test import test
from src.testClass.testClass import testClass

if __name__ == '__main__':
    # testObject = test();
    # testObject.testClassFunction();

    testClassA = testClass();
    print("测试实例化对象访问类变量".format(testClassA.testClassName));
    # 修改实例化对象的变量 这个时候这个变量已经变味了实例化对象的属性,在内存中是单独的一个空间了
    testClassA.testClassName = "我会七十二变";
    # 打印实例化变量和类变量,发现类变量的值并未改变
    print(testClassA.testClassName);
    print(testClass.testClassName);

8. Pythonでは、クラス変数を柔軟かつ動的に定義できます。個人的には、Pythonの操作だと思います。インスタンス化されたオブジェクトによって定義された属性とクラスによって定義された属性は相互にアクセスできないことに注意してください。 ;

from src.test.test import test
from src.testClass.testClass import testClass

if __name__ == '__main__':
   
    # 测试python动态定义类变量;
    testClassA = testClass();
    testClassA.dynamicVariablesA = "我是python的实例化对象的动态变量";
    testClass.dynamicVariables = "我是python的动态变量";
    print(testClass.dynamicVariables);
    print(testClassA.dynamicVariablesA);

9.Pythonでのクラス変数の任意の定義によって引き起こされる混乱を避けるために、それは提供します

class testSlots:

    # 使用了__slots__,那么这个实例化对象中就只存在name和age的属性,无法限制类属性;
    __slots__ = ("name","age");

10. pythonの内部クラス、pythonの内部クラスは、クラスだけでなく、より複雑でBaidu自体のメソッドでも定義できます。

おすすめ

転載: blog.csdn.net/weixin_44887276/article/details/114383012