python 中哪些属于对象类型 python对象的属性和方法_python对象的三个属性

Python

我们已经学了很多东西了,今天我们来聊一聊Python中类、实例化、私有属性、封装,继承都是些什么,他们都可以干些什么,我们马上开始吧开发工具:IDLE (Python 3.7 64-bit) 、PyCharm 注:不需要和小编一样的版本,只要是Python3的版本就可以,语法方面没有什么不同的。

python 中哪些属于对象类型 python对象的属性和方法_python对象的三个属性_02

人生苦短,我用Python

1.类的定义(__init__方法,基类,self)

类的定义:class ClassName(object):,object是父类名,object是一切类的基类。__init__方法是函数写在类中就是方法,实例化对象的时候必须调用__init__方法。

python 中哪些属于对象类型 python对象的属性和方法_封装_03

类的定义

2.类的属性

属性的本质就是变量。

python 中哪些属于对象类型 python对象的属性和方法_Python_04

类属性

也就是说类的属性就是它们的共有属性,将他们共同的部分写在前面可以节省一部分的代码,使得代码显示的更简洁美观。实例化化的属性,就是他们之间的不同部分,这个是不能省略的。如果要从新修改类属性,以上代码为列,可以用从新赋值的方法进行操作,即:dog.eye=4,这样就完成了从新赋值的修改操作。

3.私有化

对于Python中的类属性,可以通过双下划线”__”来实现一定程度的私有化。“ _”和“ __”的使用 更多的是一种规范/约定,没有真正达到限制的目的。“_”:以单下划线开头只能允许其本身与子类进行访问,(起到一个保护的作用)。“__”:双下划线的表示的是私有类型的变量。这类属性在运行时属性名会加上单下划线和类名。“__foo__”:以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如 __init__()。

python 中哪些属于对象类型 python对象的属性和方法_python 中哪些属于对象类型_05

加了下划线之后eye和leg被保护起来了

python 中哪些属于对象类型 python对象的属性和方法_python 中哪些属于对象类型_06

单下划线只隐藏我们可以直接写出来调用

单下划线只是隐藏了,但是可以通过直接输入方法强制访问到和修改它的参数。

python 中哪些属于对象类型 python对象的属性和方法_Python_07

双下划线直接完全保护无法外部访问

万一有一天我们真的要修改双下划线里面的参数的要怎么办?访问它要怎么办?私有化的方法Python提供了一种getLeg的方法查看私有方法,可以在类中进行访问。

python 中哪些属于对象类型 python对象的属性和方法_Python_08

用getLeg方法可以访问到保护的类方法

python 中哪些属于对象类型 python对象的属性和方法_Python_09

查看私有化的参数

那么问题来了,我们需要修改里面的数据应该怎么做呢?用setLeg方法修改私有化属性的参数,

python 中哪些属于对象类型 python对象的属性和方法_Python_10

setLeg方法修改私有化属性

总结:实现私有化的方法:dog._Animal__leg,的方法实现,查看用print(dog._Animal__leg).双下划线是主动在leg前加了一个Animal的类名,所以我们看不到。还可以dog._Animal__leg=7,直接修改leg。

4.面向对象的三大特性:封装、继承、多态。

封装:def函数就是一个封装,将所有属性和方法封装到一个类之中。用的时候pip一下就行。

python 中哪些属于对象类型 python对象的属性和方法_下划线_11

封装

python 中哪些属于对象类型 python对象的属性和方法_python 中哪些属于对象类型_12

继承

当出现相同的方法的时候,现在的会覆盖之前的值。可以继承Animal的类,这样可以提高写代码的效率。“class People( Animal):”在括号内写入类名就是继承。

python 中哪些属于对象类型 python对象的属性和方法_封装_13

多态就是同一指令做出的不同反映

Python中是通过重写的方式支持多态的,Amerca、chinses、Japen三个方法都重写了speak的方法。

python 中哪些属于对象类型 python对象的属性和方法_python 中哪些属于对象类型_14

三个方法都从写speak的内容

今天就为大家分享到这里,因为四一边学习一边整理,大家有什么建议可以提出来,大家一起交流进步。大家加油!