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中的构造方法不支持方法的重载,有且仅有一个,注意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的内部类不光可以定义在类中,也可以定义到方法中,较为复杂,自行百度;

猜你喜欢

转载自blog.csdn.net/weixin_44887276/article/details/114383012