面向对象及三大特征

a { text-decoration: none }总结01、类的内置属性:__dict__: 类的属性(包含一个字典,由类的数据属性组成);__doc__

总结

01、类的内置属性:__dict__: 类的属性(包含一个字典,由类的数据属性组成);__doc__:类的文档字符串;__name__: 类名;__module__:类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块 mymod 中,那么 className.__module__ 等于 mymod);__bases__: 类的所有父类构成元素(包含了一个由所有父类组成的元组)

02、类方法是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法

03、类方法:@classmethod def getCountry(cls):第一个参数接收的必须是类对象,一般以 cls 作为第一个参数

04、类方法还有一个用途就是可以对类属性进行修改:@classmethod def setCountry(cls,country): cls.country = country

05、静态方法通过修饰器@staticmethod来进行修饰,另外注意静态方法不需要定义 cls 参数来接收类对象,它是通过类对象直接调用类属性,存放逻辑性的代码,逻辑属于类,但是和类本身没有交互

06、在静态方法中,不会涉及到类中的方法和属性的操作;存放逻辑性的代码,主要是一些逻辑属于类,但是和类本身没有交互

07、类方法的第一个参数是类对象 cls, 那么通过 cls 引用的必定是类对象的属性和方法;而实例方法的第一个参数是实例对象 self,那么通过 self 引用的可能是类属性、也有可能是实例属性(需要具体分析),不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高;静态方法@staticmethod 中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用

08、类的私有属性和方法:给属性前面两个下划线代表私有化,属性和方法同样适用;私有类属性(__age);私有实例属性(self.__name);私有实例方法(__func())。我们要牢记私有的属性和方法叧能在类的内部调用不能在外部调用。

09、类方法 @classmethod,第一个形参 cls,默认传递;静态方法 @staticmethod 没有默认传递的形参;对象方法(成员方法) def 方法名 第一个形参 self,默认传递

10、类的私有属性和方法 给属性前面两个下划线代表私有化,属性和方法同样适用;私有类属性(__age); 私有实例属性(self.__name); 私有实例方法(__func());私有的属性和方法只能在类的内部调用不能在外部调用

11、类外修改类属性,必须通过实例对象去引用,然后进行修改;实例对象引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响类属性;通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除该实例属性

12、类属性(私有和公有)即类变量,所有对象共享同一份类属性;实例属性(私/公)即成员变量,每个不同对象,有不一样值的实例属性

13、封装是实现面向对象程序设计的第一步,封装就是将数据(属性)或函数(方法)等集合在一个个的中类中(class),被封装的对象通常被称为抽象数据类型

14、私有的属性、方法,不会被子类继承,也不能被访问

15、python中是可以多继承的并且父类中的方法、属性,子类也都会继承

16、python3 中的多继承遵循 mro 算法顺序当中的,先广度后深度的原理;新式类叧会执行一次__init__()文件

17、子类在继承的时候,在定义类时,小括号()中为父类的名字;子类继承后,父类的属性、方法,都会被继承给子类

18、私有的属性,不能通过对象直接访问,但是可以通过方法访问。 私有的方法,不能通过对象直接访问。 私有的属性、方法,不会被子类继承,也不能被访问

19、重写:就是子类中,有一个和父 类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法。

20、调用父类方法:super(子类名,self).方法名(参数);super().方法名(参数);父类名.方法名(self,参数)

21、super 不是代表父类,而是按照继承顺序的下一个类,初学者可以认为,super.__self__()整合在 一其就是可对父类中的方法操作

22、多态:定义时的类型和运行时的类型不一样,此时就成为多态,更通俗的讲就是多种形态,不同 对象调用相同方法的时候产生不同的结果

23、Python 中主要是通过类的继承以及方法的重写来实现该功能

24、魔法方法是指 Python 内部已经包含的,被双下划线所包围的方法,这些方法在进行特定的操作时会自动被调用;自由度变得更高

25、python 解释器默认调用__init__()方法,当内存中构建一个对象数据的时候回调__init__()方法

26、当删除一个对象时,python 解释器也会默认调用一个方法,这个方法为__del__()方法,当内存中销毁(释放)一个对象时回调__del__()方法

27、1个变量保存了对象的引用时,此对象的引用计数就会加 1;使用 del 删除变量指向的对象时,有3个引用计数,只会让这个引用计数减1,即变为2,只有真正删除这个 hero()实例对象时候才会回调 del 魔法方法

28、__new__至少要有一个参数 cls,代表要实例化的类(并不是对象),此参数在实例化时由Python解释器自动提供,要有返回值,返回实例化出来的实例,return object.__new__(cls)出来的实例

29、__init__有一个参数self,就是返个__new__返回的实例,__init__在__new__的基础上可以完成 一些其它初始化的动作,__init__不需要返回值;,__new__方法就是前期环节,_init__方法就是后期

30、__str__:在将对象转换成字符串 str(对象)的时候,打印对象的信息,必须要 return 一个字符串类型的返回值,实际上是被 print 函数默认调用的

31、单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只 有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例

32、__instance = None | def __new__(cls,name ,age): if not cls.__instance: cls.__instance = object.__new__(cls) | return cls.__instance

标签: 类属 类中 的是